我可以在案例陈述中使用.include?()吗?红宝石
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以在案例陈述中使用.include?()吗?红宝石相关的知识,希望对你有一定的参考价值。
我已经开始学习Ruby了。我有一个小项目来构建游戏并尝试创建一个接收用户输入并相应处理的函数。
def Game.listener
print "> "
while listen = $stdin.gets.chomp.downcase
case listen
when (listen.include?("navigate"))
puts "Navigate to #{listen}"
break
when ($player_items.include?(listen))
Items.use(listen)
break
end
puts "Not a option"
print "> "
end
end
但是,case语句无法检测到我已键入导航。有没有办法解决这个问题,或者如果我完全关闭,有人能指出我正确的方向吗?
我找到了解决问题的方法,这是一种安全可靠的方法吗?
while listen = $stdin.gets.chomp
case listen.include?(listen)
when listen.include?("navigate")
puts "Navigate to #{listen}"
when listen.include?("test")
puts "test"
when $player_items.include?(listen)
puts "Using the #{$player_items[listen]}"
break
else
puts "Not a option"
end
print "> "
end
答案
如果你想使用case
而不是if-elsif
块,那么你可以写这样的东西(注意case
之后的空格):
while listen = $stdin.gets.chomp
case
when listen.include?('navigate')
puts "Navigate to #{listen}"
when listen.include?('test')
puts 'test'
when $player_items.include?(listen)
puts "Using the #{$player_items[listen]}"
break
else
puts "Not an option"
end
print "> "
end
另一答案
在你的情况下使用if elsif
if listen.include?("navigate")
# ...
elsif $player_items.include?(listen)
# ...
end
以上是关于我可以在案例陈述中使用.include?()吗?红宝石的主要内容,如果未能解决你的问题,请参考以下文章