Haxe参考对象通过字符串

Fer*_*177 3 haxe

在Haxe中,我试图通过变量访问对象的值.在JavaScript中,您使用[ ]它来访问它,但在Haxe中,这不起作用并返回错误:

字符串应该是Int

{x:Int,name:String}上不允许访问数组

我需要最后一行代码的帮助:

var room = { x: 10, name: 'test' };

trace(room.name);   // this works returns 'test' 

// how do I reference foo to return 'test' as the above result.
var foo = "name";
var results = room[foo];   // need fixing
Run Code Online (Sandbox Code Playgroud)

Gam*_*a11 5

你要做的是做反射,在Haxe中这样做的方法是通过ReflectAPI:

var results = Reflect.field(room, "name");
Run Code Online (Sandbox Code Playgroud)

注意:反射通常被认为是不好的做法,因为它将错误从编译移动到运行时并且本质上是类型不安全的.有通常更好的方法来解决问题,但很难在这里推荐一个具体的解决方案,而更多的上下文.