Как написать универсальную функцию сравнения в Haxe (haxe3)
Я пытаюсь написать универсальную функцию сравнения (например, c strcmp) в Haxe3 для шаблона типа A, предполагая, что этот тип шаблона имеет оператор меньше чем или равен "<=".
Я видел в документации по Haxe3 (http://haxe.org/manual/haxe3/features) что вы можете сделать аналогичную работу, если хотите предположить, что тип шаблона имеет новую функцию:
@:generic static function foo(t:T) {
trace(Type.typeof(t)); // TClass([class String]) / TClass([class Template])
return new T("foo");
}
Итак, я попробовал ту же технику с "ле» функция:
class Main {
@:generic static public function compare_(x:A,y:A): Int {
if (x.le(y) && y.le(x)) return 0;
else if (x.le(y)) return -1;
else return 1;
}
static function main() {
var a:MyInt = new MyInt(1);
var b:MyInt = new MyInt(2);
trace(compare_(a,b));
}
}
class MyInt {
var data:Int;
public function new(i:Int) {this.data = i; }
public function le(y:MyInt){return data