Haxe:检查动态类型是否为对象
Haxe: check if a dynamic type is an Object
我需要检查 var a : Dynamic = {}
是否是一个对象。所以我期待:
var a : Dynamic;
a = 17.2; check( a ); // false
a = "test"; check( a ); // false
a = [1,2,3]; check( a ); // false
a = 99; check( a ); // false
a = {b:1, c:2}; check( a ); // true
这是我所拥有的(与上面略有不同,因为它检查多种类型和 returns 枚举)。一切正常,除了对象行:
function check( v : Dynamic ) : TokenType {
if ( Std.is(v, std.Array) ) return TTArray;
else if ( Std.is(v, std.String) ) return TTString;
else if ( Std.is(v, Object) ) return TTObject; // What do I need here?
else if ( Math.isNaN( v ) ) return TTUnknown;
else if ( Std.is(v, StdTypes.Float) ) return TTNumber;
else if ( Std.is(v, StdTypes.Int) ) return TTNumber;
return TTUnknown;
}
注意 - 这是更大 class 的一小段。类型必须是 Dynamic
(例如我不能使用 Any
)。
提前致谢!
这里有两个选择:
对于您的用例,前者可能更可靠一些,因为 类 是一个单独的 ValueType
。例如,在 JS 目标上 Type.typeof("string")
将导致 TClass(String)
,而您只需使用 Reflect.isObject()
.
得到 true
我需要检查 var a : Dynamic = {}
是否是一个对象。所以我期待:
var a : Dynamic;
a = 17.2; check( a ); // false
a = "test"; check( a ); // false
a = [1,2,3]; check( a ); // false
a = 99; check( a ); // false
a = {b:1, c:2}; check( a ); // true
这是我所拥有的(与上面略有不同,因为它检查多种类型和 returns 枚举)。一切正常,除了对象行:
function check( v : Dynamic ) : TokenType {
if ( Std.is(v, std.Array) ) return TTArray;
else if ( Std.is(v, std.String) ) return TTString;
else if ( Std.is(v, Object) ) return TTObject; // What do I need here?
else if ( Math.isNaN( v ) ) return TTUnknown;
else if ( Std.is(v, StdTypes.Float) ) return TTNumber;
else if ( Std.is(v, StdTypes.Int) ) return TTNumber;
return TTUnknown;
}
注意 - 这是更大 class 的一小段。类型必须是 Dynamic
(例如我不能使用 Any
)。
提前致谢!
这里有两个选择:
对于您的用例,前者可能更可靠一些,因为 类 是一个单独的 ValueType
。例如,在 JS 目标上 Type.typeof("string")
将导致 TClass(String)
,而您只需使用 Reflect.isObject()
.
true