読者です 読者をやめる 読者になる 読者になる

Haxeのexternとinlineを同時に書くとinlineが優先されるっぽい

Haxe

HaxejQuery externで new JQuery("selector"); って書くのがダサいなぁと思って、いろいろ試していたときにコンパイルできたコードをメモ。externとinlineを同時に書くとinlineの方が優先されるらしい。

Haxe 3.1.3で確認。

@:native("jQuery")
extern class JQuery {
    public static inline function create(selector: String, ?context: Dynamic): JQuery {
        return untyped __js__("jQuery")(selector, context);
    }
}
var elem = JQuery.create("body");
var tag = JQuery.create("<div/>");

その他のポイントとしては、untyped __js__("jQuery")で、Functionを取得して、それをコールしていること。

で、ここまでやってみたいのだけど、そもそも「jQueryの $() が色々できてしまうこと」自体がHaxeの文化にマッチしていないので、$.find() とか $.parseHTML() を使った方がいいよねという考えに至ったので、不採用とした。