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