如何在Ruby中查找哈希工作?

时间:2016-07-05 04:40:39

标签: ruby hash

Ruby如何在哈希中查找密钥?我认为只要它在哈希中找到一个键,它就会在不评估其他键/值对的情况下返回其值?但我想我错了。 例如,

test = {"a" => 10, "b" => 20, "c" => 30, "d" => 1/0}

现在,如果我执行test["a"],则由于d的无限值而返回错误,如果我删除" d",它工作正常(这意味着它会检查所有密钥/值对,即使它在第一个键中找到匹配项)。因此,如果我在一个非常大的哈希中搜索一个密钥,那么在返回该特定哈希的值之前,Ruby是否会评估每个键/值的有效性?如果是这种情况,有没有办法在找到密钥后立即中断哈希?

更新 为了澄清,我试图了解它在Ruby中是如何工作的。因此,对于例如,如果我有一个具有500个键/值对的散列(所有有效不像1/0),并且让我们说" a"是第一把钥匙。因此,如果我在那个大哈希上测试[" a"],那么Ruby是否会在内存中加载所有键/值对,或者只是在找到关键字之后突然出现" a&#34 ;

1 个答案:

答案 0 :(得分:2)

当ruby创建哈希时,而不是在访问哈希时,会出现错误 - 将值插入哈希显然需要对其进行评估。

没有" loading"从散列中获取值时继续:整个散列始终在内存中。哈希表的完整解释有点超出了范围,但简而言之,哈希通过散列哈希导出哪些哈希桶应该包含值的密钥来工作。然后搜索该存储桶,并在找到密钥时返回该值。