如何解决Haxe:检查动态类型是否为对象
我需要检查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
这就是我所拥有的(与上面略有不同,因为它检查多种类型并返回一个枚举)。一切正常,除了目标行:
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;
}
注意-这是一类更大的小片段。类型必须为Dynamic
(例如,我不能使用Any
)。
谢谢!
解决方法
您在这里有两个选择:
由于类是单独的ValueType
,对于您的用例,前者可能更可靠。例如,在JS目标Type.typeof("string")
上将得到TClass(String)
,而您只需通过true
得到Reflect.isObject()
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。