【发布时间】:2019-04-12 14:43:15
【问题描述】:
对于这个可能很愚蠢的问题,我深表歉意,我绝对是 Ruby 和一般代码的初学者。
我已经设置了一个带有一些预定值的散列。我想询问用户输入,如果该输入与现有键匹配,我希望更新相应的值(在本例中为 + 1)。然后我想打印所有当前的最新值。
hash = {"apple": 6, "banana": 2, "carrot": 3}
order = gets.chomp.downcase
hash.each do |key, value|
if key.to_s == order
value += 1
puts "Your order includes: #{value} #{key}."
end
end
我的问题是我只知道如何打印单个键值对。
例如如果用户输入“苹果”,我希望输出显示“您的订单包括:7 个苹果、2 个香蕉、3 个胡萝卜。”
【问题讨论】:
-
我想,当 count 大于 1 时,您想将 'apple' 复数为 'apples'。
-
请记住,您可以在哈希中查找内容,而无需旋转并进行比较。
if (value = hash[order])一口气完成所有这些。随着项目数量的增加,您在此处使用的方法会逐渐变慢。无论条目数如何,查找方法所花费的时间大致相同。 -
这里问题的症结在于
value += 1没有更新哈希。你需要使用Hash#[]=