HAXE
public var bonus:Map<Int,Int>;
if (bonus.exists(id))
score += bonus.get(id);
编译为以下php
if($bonus->exists($id))
$score += $bonus->get($id);
理想情况下,我喜欢haxe来生成
if(isset($bonus[$id]))
$score += $bonus[$id];
我怀疑使用动态是可能的,但是我希望避免使用动态,因为不推荐使用动态。在PHP中存在是不必要的,但不会为我们的as3目标编译。目前的分析显示存在(执行时间的50%)和获得(30%)非常昂贵。我希望能够使用内置数组类型或者至少内联存在和获取调用。任何人都可以告诉我如何或建议更好的方法吗?
由于
答案 0 :(得分:0)
对于PHP的isset(),您可以简单地将变量与null进行比较,即。 &#34; myVar!= null&#34;。
if(bonus[id] != null)
score += bonus[id];
或使用三元运算符
score += (bonus[id] != null) ?: bonus[id];
旁注:
我相信,您也可以使用in_array()
尝试PHP Lambda.has(arrayOrMap, "key");
解决方案。但我并不确切知道Lambda.has是否适用于地图。
但是,!=
仍然比调用in_array()
更快。