簡體   English   中英

檢測Haxe中的目標語言

[英]Detect target language in Haxe

我想在Haxe中檢測目標語言,以便根據Haxe編譯的語言來改變函數的行為。

類似Haxe的偽代碼示例:

class Test() {
static function printStuff(toPrint) {
    if (the target language is Java) {
        System.out.println(toPrint);
    } else if (the target language is C++) {
        cout << toPrint;
    } else if (the target language is JavaScript) {
        alert(toPrint);
    }

}
}

目前是否有可能在Haxe實現這一目標?

您可以使用條件編譯Haxe Magic來實現此目的。 例如:

#if java
    untyped __java__("java.lang.System.out.println(toPrint);");
#elseif js
    untyped __js__("alert(toPrint);");
#elseif ...
    ...
#end

甚至只是使用跟蹤。

class Test()
{
   static function main()
   {
       #if java
           var language = 'java';
        #elseif js
            var language = 'js';
        #elseif cs
            var language = 'csharp';
        #elseif php
            var language = 'PHP'
        #elseif (flash||flash8)
            var language = 'flash';
        #elseif cpp
            var language = 'c++';
        #elseif neko
            var language = 'neko';
        #elseif tamarin
            var language = 'tamarin';
        #end
        trace( language );
    }   
}

但應該注意的是,用於編譯它的hxml需要在理論上指定每個目標,這將是通用的...

-java java
-main Test
--next
-js test.js
-main Test
--next
-cs cs
-main Test
--next
-php www
-main Test
--next
-swf test8.swf
-swf-version 8
-main Test
--next
-swf test.swf
-swf-version 9
-main Test
--next
-neko neko
--main Test

但在實踐中,您可能希望添加其他編譯器標志,甚至使用-cmd來實際運行示例。

開始使用一系列目標......

“http://haxe.org/doc/start/

條件編譯

“http://haxe.org/ref/conditionals

編譯器標志和選項,雖然我可能錯過了一個鏈接。

'http://haxe.org/manual/tips_and_tricks'http://haxe.org/doc/compiler

然后目標魔法

“http://haxe.org/doc/advanced/magic

對於每個目標,您可以使用通用haxe api以及以目標命名的目標特定庫

“http://haxe.org/api

我對Stackoverflow的第一個回復很抱歉,如果它有點冗長:)也是我無法發布正確鏈接(限於兩個)的原因。

對不起,你為什么要表現出無條件的方式?

您可以擁有完全類型和自動完成的代碼

class Test() {
    static function printStuff(toPrint) {
        #if java
            java.lang.System.out.println(toPrint);
        #elseif js
            js.Lib.alert(toPrint);
        #elseif cpp
            cpp.Lib.print(toPrint);
        #end
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM