如何在哈希中添加数字?

时间:2014-11-08 03:16:40

标签: ruby hash integer

在我的代码中,我有一个散列,每个都有一个设置值为0,在运行代码之后,我希望它显示" 1",但它只显示0.可以任何人帮助,请解释我的错误以及它为什么不起作用。

puts "Hello!, and welcome to the 'Coin Calculator V1.0', please enter a value."

  coin_value = gets.to_i
  coin_num = {"quarters" => 0,"dimes" => 0,"nickels" => 0,"pennies" => 0}

  if coin_value>25
    coin_value-25
    coin_num["quarters"]+1 // **basically, how do I add an integer value to the old integer?
    puts coin_num["quarters"]

end

2 个答案:

答案 0 :(得分:2)

coin_num["quarters"] = coin_num["quarters"] + 1

可以使用+=运算符缩短(添加分配):

coin_num["quarters"] += 1

答案 1 :(得分:0)

你的算术表达式都没有改变任何东西。

coin_value - 25  

评估为低于coin_value的25;如果你将它打印出来或分配到某个地方,你会看到它。但是,由于你没有对价值做任何事情,它只会被扔掉而没有任何反应。当然,coin_value不会改变。

同样,

coin_num["quarters"] + 1

评估为coin_num["quarters"]的当前值以上,但不会改变任何内容。

如果要更改变量的值 - 任何变量,无论是coin_value之类的简单标量还是哈希或数组的元素 - 都必须使用赋值语句 。您需要=,您要更改的变量必须位于=的左侧:

coin_value = coin_value - 25
coin_num['quarters'] = coin_num['quarters'] + 1

Ruby确实使用涉及同一变量之前值的简单表达式来定义用于修改变量的简写运算符:

coin_value -= 25
coin_num['quarters'] += 1

但你仍在使用= - 它现在只是复合赋值运算符的一部分。