Ruby 无法获取要显示的其他条件
我正在完成一个codeacademy项目,我无法获得特定的条件来显示。这是我的密码 当我选择Ruby 无法获取要显示的其他条件,ruby,Ruby,我正在完成一个codeacademy项目,我无法获得特定的条件来显示。这是我的密码 当我选择add并选择要添加的电影时,我希望它让我知道我输入的电影是否已经存在于散列中。当我输入一部已经存在于散列中的电影时,它会询问我的评级。我相信我把else语句放在了正确的位置,但它似乎不起作用 更新:我更改了这两行代码(删除了.to_sym) 它不允许我输入重复项 现在,当我选择“添加”然后尝试添加“Memento”时,我会收到错误消息 “#{title}已存在。其评级为#{rating}!”#{ratin
add
并选择要添加的电影时,我希望它让我知道我输入的电影是否已经存在于散列中。当我输入一部已经存在于散列中的电影时,它会询问我的评级。我相信我把else
语句放在了正确的位置,但它似乎不起作用
更新:我更改了这两行代码(删除了.to_sym)
它不允许我输入重复项
现在,当我选择“添加”然后尝试添加“Memento”时,我会收到错误消息
“#{title}已存在。其评级为#{rating}!”#{rating}生成一个1的整数(由于整数值为4,因此没有意义)
end因为
title
是一个字符串,所以不需要将其转换为符号。然后,您可以使用Hash::include?
查看密钥是否存在
# ADD
when "add"
puts "What would you like to add?"
title = gets.chomp
# title = title.to_sym # delete this line since the hash keys are strings
if !movies.include? title # use Hash::include? to see if key exists
puts "What its rating? (enter 1-4)"
rating = gets.chomp
...
else
puts "Movie already exists. Its rating is #{movies[title]}!" # remove .to_sym
end
删除to_sym呼叫时,您没有删除所有呼叫:
movies[title.to_sym] = rating.to_i
及
不引用电影分级,而是引用可变分级。还没定下来
else块应该是
rating = movies[title]
puts "#{title} already exists. Its rating is #{rating}!"
你的问题是什么?您有什么问题?它允许您添加两次相同的电影,还是只允许您添加一个预定义的电影?如果只是预定义的电影,那么您需要阅读Ruby中符号和字符串之间的差异.nil?将始终满足要求,除非您向电影添加符号键。。由于情况已发生变化,让我更新问题。因此,如果电影不存在,您希望对其进行评级和添加。对吗?谢谢你这就是解决办法!
movies[title.to_sym] = rating.to_i
Its rating is #{rating}!"
rating = movies[title]
puts "#{title} already exists. Its rating is #{rating}!"