Я бы предложил определить метод, который обрабатывает ввод и возвращает direction
для использования в if/then/else
:
def get_direction(input)
keywords = ['look', 'left', 'right']
directions = {101 => :right, 110 => :left}
directions.default = :none
input = input.scan(/\w+/).map(&:downcase).uniq
key = keywords.map { |k| input.include? k }.map{ |e| e ? 1 : 0 }.join().to_i
directions[key]
end
Вот несколько примеров вызовов методов:
get_direction("Yes. Look at your right now! Right now! Look!") #=> :right
get_direction("Yes. Look at your left now!") #=> :left
get_direction("Look right. Left them there!") #=> :none
get_direction("Stay right here!") #=> :none
Внутри метода вы можете найти
String # scan для разделения ввода на слова. Кроме того, существует
.map(&:downcase)
для обеспечения нечувствительности к регистру с использованием
Array # map . Для выбора вывода используется
Hash .
Добавьте p
, чтобы распечатать эту строку, чтобы понять, как она работает:
p key = keywords.map { |k| input.include? k }.map{ |e| e ? 1 : 0 }.join().to_i
Теперь вы можете использовать метод следующим образом:
direction = get_direction(gets.chomp.to_s)
if direction == :right
p 'right'
elsif direction == :left
p 'left'
else
p 'none'
end