値のクラス名を返します。
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ラッパー・オブジェクトの識別にも使用できます。