- text = 'The rain in Spain falls mainly in the plain.'
first = Hash.new []
second = Hash.new {|hash,key| hash[key] = []}
text.split(/\W+/).each do |word|
p "word: #{word}"
p first[word[0, 1].downcase].object_id
first[word[0, 1].downcase] << word
p first[word[0, 1].downcase]
end
p first
- "word: The"
- 46999283958220 这里是关键。每次都是引用同一个数组。
- ["The"]
- "word: rain"
- 46999283958220
- ["The", "rain"]
- "word: in"
- 46999283958220
- ["The", "rain", "in"]
- "word: Spain"
- 46999283958220
- ["The", "rain", "in", "Spain"]
- "word: falls"
- 46999283958220
- ["The", "rain", "in", "Spain", "falls"]
- "word: mainly"
- 46999283958220
- ["The", "rain", "in", "Spain", "falls", "mainly"]
- "word: in"
- 46999283958220
- ["The", "rain", "in", "Spain", "falls", "mainly", "in"]
- "word: the"
- 46999283958220
- ["The", "rain", "in", "Spain", "falls", "mainly", "in", "the"]
- "word: plain"
- 46999283958220
- ["The", "rain", "in", "Spain", "falls", "mainly", "in", "the", "plain"]
- {}
text.split(/\W+/).each do |word|
p "word: #{word}"
p second[word[0, 1].downcase].object_id
second[word[0, 1].downcase] << word
p second[word[0, 1].downcase]
end
p second
- "word: The"
- 46999283949940
- ["The"]
- "word: rain"
- 46999283924940 这里按照key取,不同的key对应不同的数组
- ["rain"]
- "word: in"
- ["in"]
- "word: Spain"
- 46999283923920
- ["Spain"]
- "word: falls"
- 46999283923420
- ["falls"]
- "word: mainly"
- 46999283922920
- ["mainly"]
- "word: in"
- ["in", "in"]
- "word: the"
- 46999283949940
- ["The", "the"]
- "word: plain"
- 46999283921440
- ["plain"]
- {"t"=>["The", "the"], "r"=>["rain"], "i"=>["in", "in"], "s"=>["Spain"], "f"=>["falls"], "m"=>["mainly"], "p"=>["plain"]}
以上就是ruby的hash学习笔记例: 将字符串文本中的单词存放在map中的详细内容,更多关于ruby的hash学习笔记例: 将字符串文本中的单词存放在map中的资料请关注九品源码其它相关文章!