我有一个地图变量:
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删除基于值的键?
答案 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)];
它不仅更短,而且还具有更好的运行时性能。