値のクラス名を返します。
ClassName := Type(Value)
型:文字列
この関数は、Valueのクラス名を返します。
値のクラス名を決定するアルゴリズムは、おおよそ以下のようになります:
TypeOf(Value)
{
if (comClass := ComObjType(Value, "Class")) != ""
return comClass
try ; `Value is Object` is not checked because it can be false for prototypes.
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
}
数値文字列は数式やほとんどの組み込み関数で有効なため、通常、この関数は値が数値かどうかを判断するために使われることはありません。しかし、値の正確な型の方が重要な場合もあります。このような場合は、Typeの代わりにValue is Numberなどを使用することを検討してください。
ある値が数値として使えるかどうかを調べるには、IsNumber関数、IsInteger関数、またはIsFloat関数を使います。
あらゆるタイプのオブジェクト(つまり、プリミティブ値でないもの)をチェックするには、IsObject関数を使います。
値が特定のクラスのインスタンスであるかどうかをチェックするには is演算子を使います。これは、プリミティブ値やCOMラッパー・オブジェクトの識別にも使用できます。