【问题标题】:Check/display the declared type of an entity (variable, expression...)检查/显示实体的声明类型(变量、表达式...)
【发布时间】:2012-11-04 16:35:26
【问题描述】:

我正在研究 VB 中的类型,尤其是 VBA 中的类型。一般来说,给定一个实体有两种类型:我猜Effective value typethis part of the specification中定义为value typesDeclared Typethis part of the specification 中定义。

要进行测试,我需要使用一些函数来检查类型。有TypeNameVarType。我认为它们用于检查实体的effective value type,因为TypeName可以返回DBNullDecimalNothingVarType 可以返回 vbNullvbEmptyvbErrorvbDecimal。这些类型存在于effective value types的表中,但不存在于declared type的表中。

所以现在,我的问题是,有谁知道如何检查/显示实体(变量、表达式...)的 declared type

编辑1:可能对于一个变量来说,它的declared type就是变量声明所指定的类型。我想坚持认为,VBA 似乎有 declared type 用于表达式。例如,Operator Declared Type 在此 link 中被提及。我认为是指操作结果的declared type。这意味着-ii+5i>6...等实体可以有declared type。我想知道如何显示他们声明的类型。

【问题讨论】:

  • TypeNameVarType 是具有单个 Variant 参数的常规函数​​,因此无论“声明的类型”如何,每个变量在传递给它们之前都会转换为 Variant。在这个VarType(1) 中,1 的“声明类型”是什么?它不是一个变量,所以它根本没有被声明/标注。实现这样的东西的唯一方法是通过一种特殊的语言结构,而不是一个函数,我不知道有什么,最接近的是TypeOf ... Is
  • 看来TypeOf在VBA中只能检查Object,我们不能用它来检查IntergerString...
  • VBA 和 VBScript 中的 VarType 与您链接的参考不同,它是 msdn.microsoft.com/en-us/library/3kfz157h(v=vs.84).aspx,我认为它可以满足您的需求。
  • 这是 VBA 中 TypeName 的正确参考 - msdn.microsoft.com/en-us/library/gg278698.aspx 问题中的链接适用于 VB
  • i 是一个整数,因为它被声明为一个整数,在该声明的范围内 i 永远是一个整数。短语“有效值类型”有意义的唯一上下文是当一个变体持有一个值时,您是在问如何确定变体中值的相应数据类型?

标签: vba types vb6 vbscript


【解决方案1】:

如果,

Dim i as integer
i = 6/3

那么你做,TypeName(i>3) 它返回 Boolean,它是表达式的 Type,它基于结果值的类型而不是操作数的声明类型。它符合msdn 2.2 Entities and Declared Types 链接中给出的规范。

或者您是否正在寻找可以将 DType(i>3) 作为操作数 (i) 类型的整数返回的语法/函数(例如 DType、富有想象力的函数)?或者更确切地说,当您在某个表达式中有多个变量时,它会更有用,这样您就可以一次找到它们的所有类型? 例如一些将各种不同类型变量组合在一个表达式中的字符串。

只是想了解它何时以及如何对您有用,以及您要寻找的最终结果是什么。似乎这更像是语言根定义。

PS:我没有代表点可以评论。所以我添加了一个答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 2011-12-11
    相关资源
    最近更新 更多