我在做這個練習的Ruby紅寶石鍛鍊:關於哈希
寫一個函數,
letter_count(str)
接受一個string和 返回一個散列映射每個字母其頻率。不包括 空格。
這是一個解決方案:
def letter_count(str)
counts = Hash.new(0)
str.each_char do |char|
counts[char] += 1 unless char == " "
end
counts
end
是什麼counts[char] += 1
意思? char == " "
是什麼意思?
[+ =](https://www.google.com/search?q=ruby+plus+equals) – abl
'counts'是一個散列,因此'counts [char]'是散列的值該鍵等於局部變量'char'的值。例如,'count [「a」]'是鍵'「a」'的值。 '「a」'是一個字符串(即使它由單個字符組成)。 Ruby沒有字符對象。 Ruby將'count [char] + = 1'擴展爲'counts [char] = counts [char] + 1',然後執行它。 'count [char] ==「」'如果'char'是由單個空格字符組成的字符串,則返回true。 'Hash.new(0)'是問題的關鍵。你需要明白這一點。 –
非常好的解釋,我想我錯過了Hash.new(0)中的重要0,並且非常感謝你Cary –