Haxe 2.09 无法编译 [ "Zebra" , "Gnu" , "Elephant" ].map(callback(String.toLowerCase));



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(); }

不知道是否有更好的方法

最新更新