迭代哈希红宝石

用户名

我在这里有一半的工作一半的代码。

hash = upcase.scan(/\w/).each_with_object(Hash.new(0)) do |char, hash|
  hash[char] += 1
end 
hash.each do |key, value|
  puts "#{key}: #{value.times{print"x"}}" 
end

返回的是这样的。

xH: 1
xE: 1
xxL: 2
xO: 1

=> {"H"=>1, "E"=>1, "L"=>2, "O"=>1}

我的问题是如何使代码在打印出来后显示“ x”

#{key}:

而不是数字。

我也想知道怎么可能不返回最后一行呢?

=> {"H"=>1, "E"=>1, "L"=>2, "O"=>1}

谢谢您的帮助!

克里斯蒂安·卢帕斯库(Cristian Lupascu)

换线

puts "#{key}: #{value.times{print"x"}}" 

puts "#{key}: #{'x' * value}" 

之所以有效,是因为在Ruby String*中int会重复上述String int时间

在您的代码版本中,在显示任何内容print ...之前先对进行puts评估(并打印到控制台),这就是为什么您会得到这种看似奇怪的行为的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章