我可以在 case 语句中使用 .include?() 吗? Ruby
Can I use .include?() in a case statement? Ruby
我开始学习了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 语句无法检测到我输入了 navigate。有没有办法解决这个问题,或者如果我完全不满意,有人能给我指明正确的方向吗?
我找到了解决问题的方法,安全可靠吗?
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
在你的情况下使用 if elsif
if listen.include?("navigate")
# ...
elsif $player_items.include?(listen)
# ...
end
如果你想使用case
而不是if-elsif
块,那么你可以这样写(注意case
后面的空白space) :
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
试试这个
case listen
when /navigate/
puts "Navigate to #{listen}"
break
when (listen if $player_items.include?(listen))
Items.use(listen)
break
when "listen is something else"
puts "do something else"
break
end
我开始学习了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 语句无法检测到我输入了 navigate。有没有办法解决这个问题,或者如果我完全不满意,有人能给我指明正确的方向吗?
我找到了解决问题的方法,安全可靠吗?
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
在你的情况下使用 if elsif
if listen.include?("navigate")
# ...
elsif $player_items.include?(listen)
# ...
end
如果你想使用case
而不是if-elsif
块,那么你可以这样写(注意case
后面的空白space) :
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
试试这个
case listen
when /navigate/
puts "Navigate to #{listen}"
break
when (listen if $player_items.include?(listen))
Items.use(listen)
break
when "listen is something else"
puts "do something else"
break
end