这个哈希是如何获得密钥的?

时间:2015-04-21 08:10:47

标签: ruby

好的,这只是我正在处理的一个练习问题的答案,我对正在发生的事情感到困惑。

它基本上是在strString)中获取每个字母的数量而忽略空格。

我认为这个计数从空哈希开始,但它如何将字母作为键呢? counts[char] += 1我猜是以某种方式将密钥(字母)和值(重复次数)输入哈希值?

    def letter_count(str)
      counts = Hash.new(0)

      str.each_char do |char|
        counts[char] += 1 unless char == " "
      end
      counts
    end

1 个答案:

答案 0 :(得分:2)

开头,count是一个空哈希值,默认值为0。因此,如果我们尝试获取哈希中当前不存在的键的值,则返回0。

然后字符串中的每个字符都有一个循环。 char被视为哈希的键(但如果char是空格,则不执行任何操作)。我们获得当前存储在散列中的值(如果不存在则为0)并递增它。

因此对于字符串'作为'我们将得到这个答案:

{'a' => 2, 's' => 1}

希望它有所帮助!