Hacklang - 按价值搜索地图

时间:2015-07-11 14:19:45

标签: hhvm hacklang

天儿真好

在严格模式下,有没有办法通过值而不是键来搜索Map?

说我有地图:

$temp = Map{'melon', 'apple'};

我如何通过价值进行搜索?

1 个答案:

答案 0 :(得分:1)

首先,示例中的Map不是有效的Map。 Hack中的地图是键值对,您只提供了键。我认为这是一个错字,你打算给出的例子是

RewriteCond %{HTTP_USER_AGENT} "HTC One M8" [nocase]
RewriteRule ^.*$ – [forbidden,last]

要在Hack中搜索地图,您可以在PHP中执行相同的操作:在O(n)扫描中迭代它。这是一个使用Hack泛型编写的示例函数,因此无论输入Map如何,它都将具有正确的类型。

$temp = Map {'fruit' => 'apple', 'veg' => 'carrot'};

然而,最后一个问题回复给你:你为什么要搜索这样的地图?映射意味着对给定键进行快速值查找,以及对所有键/值对进行快速迭代。它们设计用于这样的值查找 - 这就是为什么它需要一个O(n)循环,它应该引发警告信号,表明你正在做的事情可能不是最好的。您可能需要考虑使用更合适的数据结构:如果您经常执行此操作,或者使用Set或Vector依赖,可能会构建逆映射。