Я начал изучать Ruby. У меня есть небольшой проект по созданию игры и попытался создать функцию, которая получает вход пользователя и обрабатывает соответственно.Могу ли я использовать .include?() В case case? 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
Используйте регулярное выражение с помощью '[]' -notation, 'scan' или' match'. –
@ sagarpandya82 Спасибо. Можете ли вы дать мне пример того, как это работает? Я новичок в этой области – MrSlippyFist
'(listen.include? (« Navigate »))' equals 'true' или' false', поэтому следующая строка выполняется, если 'listen' равно этому логическому значению. Это не то, что вы хотите. Вам нужно изменить 'case listen' на' case'. –