Как я могу логически включить ИЛИ два? условия в Ruby?

Я начинаю изучать Ruby, вам нужна помощь в включении? Метод.

Приведенный ниже код работает очень хорошо:

x = 'ab.c'
if x.include? "." 
    puts 'hello'
else
    puts 'no'
end

Но когда я его кодирую следующим образом:

x = 'ab.c'
y = 'xyz'
if x.include? "." || y.include? "."
    puts 'hello'
else
    puts 'no'
end

Если вы даете мне ошибку при запуске:

test.rb:3: syntax error, unexpected tSTRING_BEG, expecting keyword_then or ';' o
r '\n'
if x.include? "." || y.include? "."
                                 ^
test.rb:5: syntax error, unexpected keyword_else, expecting end-of-input

Это потому, что include? метод не может иметь дескриптор логики?

Спасибо

Ответ 1

Другой ответ и комментарий верны, вам просто нужно включить круглые скобки вокруг вашего аргумента из-за правил разбора языка Ruby, например,

if x.include?(".") || y.include?(".")

Вы также можете просто структурировать свое условное выражение, которое будет масштабироваться более легко, поскольку вы добавляете больше массивов для поиска:

if [x, y].any? {|array| array.include? "." }
  puts 'hello'
else
  puts 'no'
end

Подробнее см. Enumerable#any?.

Ответ 2

Из-за парсинга Ruby он не может распознать разницу между передачей аргументов и логическими операторами.

Просто немного измените свой код, чтобы отличить аргументы и оператор для анализатора Ruby.

if x.include?(".") || y.include?(".")
    puts 'hello'
else
    puts 'no'
end