我在嘗試升級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