我开始学习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
这是因为包括?方法不能有句柄逻辑运算符吗?
由于
答案 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