我如何逻辑或两个包含? Ruby中的条件?

时间:2013-04-21 00:49:47

标签: 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

这是因为包括?方法不能有句柄逻辑运算符吗?

由于

2 个答案:

答案 0 :(得分:12)

另一个答案和评论是正确的,你只需要在你的论证中加入括号,因为Ruby的语言解析规则,例如,

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

您也可以像这样构建条件,当您向搜索中添加更多数组时,这将更容易扩展:

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

有关详细信息,请参阅Enumerable#any?

答案 1 :(得分:11)

由于Ruby解析器,它无法识别传递参数和逻辑运算符之间的区别。

稍微修改一下代码,以区分Ruby解析器的参数和运算符。

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