我在这里有一半的工作一半的代码。
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}
谢谢您的帮助!
换线
puts "#{key}: #{value.times{print"x"}}"
到
puts "#{key}: #{'x' * value}"
之所以有效,是因为在Ruby String
*中int
会重复上述String
int
时间。
在您的代码版本中,在显示任何内容print ...
之前先对进行puts
了评估(并打印到控制台),这就是为什么您会得到这种看似奇怪的行为的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句