如何使用Lambda过滤地图?

时间:2013-11-30 11:08:35

标签: lambda haxe

我有一个地图变量:

var bitmapDepths:Map<BitmapData, Int>;

我需要删除值为0的所有键,我试过这个:

bitmapDepths= Lambda.filter(Lambda.list(bitmapDepths.keys), function(v) { return (v > 0); });

所以,我使用Lambda.list迭代Lambda中的bitmapDepths.keys,但是我收到了这个错误:

Void -> Iterator<flash.display.BitmapData> should be Iterable<Unknown<0>>

我尝试使用Lambda.array迭代bitmapDepths.keys,我得到了同样的错误,那么谁能处理这个?使用Lambda删除基于值的键?

1 个答案:

答案 0 :(得分:1)

不要使用Lambda。这是在Haxe 1中添加的一个类。在Haxe 3中,for循环/理解几乎总是更好的选择。

要删除到位的密钥:

for (k in bitmapDepths.keys()) if (k == 0) bitmapDepths.remove(k);

构建新地图:

bitmapDepths = [for (k in bitmapDepths.keys()) if (k != 0) k => bitmapDepths.get(k)];

它不仅更短,而且还具有更好的运行时性能。