返回值的类名.
ClassName := Type(Value)
类型: 字符串
函数返回 Value 的类名.
确定一个值的类名的算法可以近似地显示如下:
TypeOf(Value) { if (comClass := ComObjType(Value, "Class")) != "" return comClass try ; `Value is Object` 没有被检查, 因为对于原型可能为假. if ObjHasOwnProp(Value, "__Class") return "Prototype" while Value := ObjGetBase(Value) if ObjHasOwnProp(Value, "__Class") return Value.__Class return "Object" }
对于 COM 包装器对象, 类名也可以根据变体类型来确定, 如下所示:
ComObject_Type(obj) { if ComObjType(obj) & 0x2000 ; VT_ARRAY return "ComObjArray" ; ComObjArray.Prototype.__Class if ComObjType(obj) & 0x4000 ; VT_BYREF return "ComValueRef" ; ComValueRef.Prototype.__Class if (ComObjType(obj) = 9 || ComObjType(obj) = 13) ; VT_DISPATCH || VT_UNKNOWN && ComObjValue(obj) != 0 { if (comClass := ComObjType(obj, "Class")) != "" return comClass if ComObjType(obj) = 9 ; VT_DISPATCH return "ComObject" ; ComObject.Prototype.__Class } return "ComValue" ; ComValue.Prototype.__Class }
通常不应该使用此函数来确定一个值是否是数值, 因为数值 字符串 在数学表达式和大多数内置函数中都是有效的. 但是, 在某些情况下, 值的确切类型更为重要. 在这种情况下, 可以考虑用 Value is Number
或类似的方式代替 Type.
要检查一个值是否可以用作数字, 请使用 IsNumber, IsInteger 或 IsFloat 函数.
要检查任何类型的对象(即, 任何不是原始值的东西), 请使用 IsObject 函数.
为了检查一个值是否是一个特定类的实例, 请使用 is
运算符. 这甚至可以用于原始值或识别 COM 封装对象.
值, 表达式, Is 函数, Integer, Float, String