首页 > 其他 > 详细

ruby的hash学习笔记例: 将字符串文本中的单词存放在map中

时间:2015-12-01 22:49:21      阅读:373      评论:0      收藏:0      [点我收藏+]
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"
46999283924440
["in"]
"word: Spain"
46999283923920
["Spain"]
"word: falls"
46999283923420
["falls"]
"word: mainly"
46999283922920
["mainly"]
"word: in"
46999283924440
["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中

原文:http://www.cnblogs.com/or2-/p/5011405.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!