11

我开始学习 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

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

谢谢

4

2 回答 2

13

其他答案和评论是正确的,由于 Ruby 的语言解析规则,您只需要在参数周围加上括号,例如,

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

您也可以像这样构造您的条件,当您添加更多数组进行搜索时,它会更容易扩展:

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

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

于 2013-04-21T00:58:33.513 回答
11

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

只需稍微修改您的代码以区分 Ruby 解析器的参数和运算符。

if x.include?(".") || y.include?(".")
    puts 'hello'
else
    puts 'no'
end
于 2013-04-21T00:52:48.443 回答