我开始学习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
[]
符号、scan
或match
函数。 - Sagar Pandya(listen.include?("navigate"))
等于true
或false
,因此如果listen
等于该逻辑值,则执行以下行。这不是您想要的。您需要将case listen
更改为case
。 - Cary Swovelandlisten
是一个字符串,listen.include?('navigate')
是一个布尔值。布尔值永远不会等于或匹配一个字符串,因此该分支永远不会执行...对于所有其他分支也是如此。 - Jörg W Mittag