我认为我遗漏了一些微不足道的东西,但由于某种原因,这段代码不起作用并且给出了意外的关键字结束错误:
if @quote.user.email.include? "test" || @quote.user.email.include? "test2"
email = ""
else
email = @quote.user.email
end
但是,如果我像这样在括号中包装每个语句,这是有效的。
if (@quote.user.email.include? "test") || (@quote.user.email.include? "test2")
email = ""
else
email = @quote.user.email
end
为什么会这样?
答案 0 :(得分:4)
编译器无法告诉您正在尝试做什么。
@quote.user.email.include? "test" || @quote.user.email.include? "test2"
非常模糊,因此编译器试图找出这意味着什么。
@quote.user.email.include?("test") || @quote.user.email.include?("test2")
@quote.user.email.include?("test" || @quote.user.email.include?) "test2"
@quote.user.email.include?("test" || @quote.user.email.include?("test2"))
(@quote.user.email.include? "test") || (@quote.user.email.include? "test2")
在这种情况下,编译器向or
运算符授予首选项,这是第二种情况。这不是有效的语法,因此会抛出错误
离开parens(西雅图风格语法)很方便,但有时它太模糊了,你需要使用它们
我建议将parens添加到方法参数
@quote.user.email.include?("test") || @quote.user.email.include?("test2")