.include?
оценивает предоставленную строку как целое слово, поэтому ваш метод говорит следующее: «включает ли« привет »все вложенное слово « aieou »как его часть». Вот почему в первую очередь оно ложно, так как ваша строка «hello» не включает слово «aeiou».
Попробуйте это, и вы получите true:
vowels = "llo"
"hello".include?(vowels) # ==> true
Во-вторых, вы неправильно понимаете, что делает bang («!
»). Это не заставляет ваш метод работать, все, что он делает, - это обратный результат, поэтому, когда добавлен удар, любой истинный оператор становится ложным, а любой ложный оператор, когда добавляется удар, становится истинным.
Попробуйте следующее:
> true
> !true
> false
> !false
Вы можете убедиться в этом сами с помощью этого кода:
vowels = "llo"
!"hello".include?(vowels) # ==> false
Хорошее место для игры с небольшими вопросами Ruby logi c - это IRB или проекты Rails с rails console
, который расширяет IRB. Просто запустите irb
с терминала, чтобы вызвать подсказку Ruby, вы, вероятно, знали об этом, я просто делюсь им, если это поможет.
Вы хотите прокрутить каждую из ваших гласных и проверить каждый по отдельности, чтобы увидеть, включен ли он, и если это так, обновите результат до истины.
Вывод состоит в том, что когда есть набор вещей до go, вы обычно захотите пройти они используют each
, оценивая по одному.
vowels = "aeiou"
result = false
vowels.each_char do |char|
result = true if "hello".include?(char)
end
puts result
Есть более короткие способы сделать это, но это чистый, простой и легкий для понимания, что является хорошим показателем хорошего кода также.