以下代码编译为 Javascript 并运行正常,http ://try.haxe.org/#8C940
abstract Comparable(Dynamic) from Float from String {
@:op(a<b) static function lt(a, b):Bool;
}
class Test {
public static function min<T:Comparable>(t:T, t2:T):T {
return (t:Comparable) < (t2:Comparable) ? t : t2;
}
static function main() {
var a = min(1.1,2.2); //ok
$type(a); //Float
trace(a); //1.1
var b = min(1,2); //ok
$type(b); //Int
trace(b); //1
var c = min("a","b"); //ok
$type(c); //String
trace(c); //a
//following will produce compilation error, correctly
//min(0, "a");
}
}
但是当为 neko 编译时,它给出了以下错误:
Main.hx:7: characters 12-13 : Unexpected :
Main.hx:7: characters 12-13 : Unexpected :
Uncaught exception - load.c(181) : Module not found : main.n
有问题的错误是行:
return (t:Comparable) < (t2:Comparable) ? t : t2;
任何想法为什么语言功能在一个目标中起作用但在另一个目标中不起作用?我该如何解决 neko 的问题?
谢谢。