什么是哈希#伯爵?

iBu*_*Bug 4 ruby hash count

当我注意到这一点时,我正在玩IRB(Ruby 2.5.1):

irb(main):020:0> h 
=> {3=>4, :aaa=>false} 
irb(main):021:0> h.count 
=> 2
Run Code Online (Sandbox Code Playgroud)

但是,Ruby文档中不存在此方法.

快速测试显示hsh.count给出hsh.keys.countHash.ancestors包含相同的结果Enumerable.

究竟什么是哈希#伯爵?

mat*_*ewd 6

你好像在那里得到了大部分......就是这样Enumerable#count.

从技术上讲,hsh.keys.count是计算密钥,并hsh.count计算(将由此产生hsh.each),但在实践中这些是相同的值,因为每对都有一个唯一的密钥.

  • 然而,`hsh.keys.count` 的性能会比 `hsh.count` 更好,因为不带任何参数的 `Array#count` 与 `length` 相同。话虽这么说,“Hash#length”(“Hash#size”)在这种情况下将是性能最高的,因为它不需要首先转换为键的“Array” (2认同)