Reflect.hasField vs anon.field



我正在为API编写一个验证库,我需要检查所需字段的匿名数据结构。直接引用字段(if(anon.field)...)是否安全,还是会在静态目标上引起问题?在Reflect.hasField和直接现场访问之间是否存在速度差异?

两种检查有不同的目的。如果字段已经定义,则可以执行if (anon.field == null)。因此,如果字段不在结构上或它是不确定的(例如,如果您在typedefs中使用@:optional字段),您可能会得到运行时错误。

这就是Reflect.hasField的由来;它会检查它是否被定义。所以如果一个结构体有一个字段,你可以检查它上面的任何东西。

如果你的目标是Javascript的Reflect.hasField做同样的Object.hasOwnProperty

Reflect Api docs: http://api.haxe.org/Reflect.html#hasField

最新更新