我在尝试升级Socket.IO extern,并且遇到了问题。Extern动态属性
到目前为止,设置一个变量,他们用
socket.set(key, val, callback);
但现在是
socket.key = val;
(见GitHub问题)
我怎么来在Haxe中反映这种行为?
欢迎任何线索!
我在尝试升级Socket.IO extern,并且遇到了问题。Extern动态属性
到目前为止,设置一个变量,他们用
socket.set(key, val, callback);
但现在是
socket.key = val;
(见GitHub问题)
我怎么来在Haxe中反映这种行为?
欢迎任何线索!
我会建议使用内联函数:
public inline function set(key : String, value : Dynamic)
Reflect.setField(this, key, value);
你也可以使用 “using” 的关键字。
class SocketExtender {
public static inline function set(socket:Socket, key:String, value:Dynamic):Void {
Reflect.setField(socket, key, value);
}
public static inline function get(socket:Socket, key:String):Dynamic {
Reflect.field(socket, key);
}
}
然后添加“using com.my.package.SocketExtender;
”你进口,你的代码应该重新开始工作。
赞[this](http://try.haxe.org/#B5E8E)?这看起来不错,但我想尽可能少地改变语法。 IRC上的某个人告诉我可以实现Dynamic,或者使用宏来在场上生成这些字段。我不知道哪一个是最好的 – NorTicUs 2014-10-31 10:52:49
您是否尝试过“实现动态”?这听起来像是最简单的解决方案。 – 2014-11-02 18:50:29
是的,它确实有效,但我正在填充像我正在浪费Haxe打字系统。但也许它不能帮助 – NorTicUs 2014-11-03 12:52:01