[英]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.