Как я могу логически включить ИЛИ два? условия в 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