class Function<A,R> {
private var callback:A->R;
public function new(callback:A->R) {
this.callback = callback;
}
public function call(arg:A):R {
return this.callback(arg);
}
}
class Test1
{
static function main()
{
var f1:Function<Int,String> = new Function<Int,String>(function(a:Int) {
return Std.string(a);
});
var f2:Function<Void,String> = new Function<Void,String>(function() { // Void -> String should be (Void) -> String
return "ok";
});
var f3:Function<Int,String> = new Function<Int,String>(function() { // Void -> String should be Int -> String
return "ok";
});
}
}
class Test {
public static function main() {
callLater(function() {
trace("ok");
});
}
public static function callLater(callback:Void->Void) {
// whatever
}
}