我这里有半个半工作的代码。
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}
感谢您的帮助!
答案 0 :(得分:3)
更改行
puts "#{key}: #{value.times{print"x"}}"
到
puts "#{key}: #{'x' * value}"
它有效,因为在Ruby String
* int
will repeat the String
int
times。
在您的代码版本中,print ...
在puts
显示任何内容之前进行了评估(并打印到控制台),这就是为什么您有这种看似奇怪的行为。