Haxe 2.09无法编译:
["Zebra", "Gnu", "Elephant"].map(callback(String.toLowerCase));
报错:
字符串没有字段
虽然不使用Lambda更容易写这行。但是我真的想开始使用回调特性,因为它似乎非常适合Lambda编码,如下所示:http://haxe.org/ref/callback
我想这与字符串有关。toLowerCase方法不是静态的。文档给出的例子是:
回调(数学。3).
但是Math.pow()是静态的…
你知道有什么办法让它工作吗?
你是正确的,这是因为它不是静态的,toLowerCase
是一个在每个实例上定义的方法-因此你不能将它绑定到一大堆不同的字符串。
你的解决方案(创建一个静态函数)很好,你也可以使用一个非常简单的内联函数:
["Zebra", "Gnu", "Elephant"].map(function (str) return str.toLowerCase());
我最终为我的StringExt类创建了一个函数。
["Zebra", "Gnu", "Elephant"].map(callback(StringExt.lower));
在StringExt中:
public inline static function lower(s:String):String { return s.toLowerCase(); }
不知道是否有更好的方法