如何在哈希中复制键和值

时间:2016-07-06 17:18:54

标签: ruby

我想制作一个随机数生成器。我希望结果是:

"Your results are: 7, 7, 7"

这是我的代码:

random = 3.times.map {Random.new.rand(0..10000)}
puts random #Results ====> 180, 91, 300
@duh={}
random.map {|x|
  case x
    when 1..3000
      @duh["7"]=10000 #Jackpot
    when 3001..6000
      @duh["Cherries"]=500
    when 6001..10000
      @duh["Diamond"]=400
  end
}
puts "Your results are: #{@duh.keys.join(", ")}!"

数字结果为180, 91, 300。它给了我一个7。如何保留我的三个7

1 个答案:

答案 0 :(得分:3)

您在这里使用map,但没有以正确的方式使用:

numbers = 3.times.map { Random.new.rand(0..10000) }

prizes = numbers.map do |x|
  case x
  when 1..3000
    [ '7', 10000 ]
  when 3001..6000
    [ "Cherries", 500 ]
  when 6001..10000
    [ "Diamond", 400 ]
  end
end

puts "Your results are: #{prizes.collect { |p| p[0] }.join(", ")}!"

使用map的唯一原因是,如果您对该操作的结果感兴趣。否则使用更快的each,因为它不关心每次迭代的结果。

请记住,在哈希中,您只能拥有一次给定的密钥。一遍又一遍地向7分配相同的值意味着只有一个7键。