||在Ruby中 - 意外的关键字结束

时间:2017-11-08 18:04:45

标签: ruby

我认为我遗漏了一些微不足道的东西,但由于某种原因,这段代码不起作用并且给出了意外的关键字结束错误:

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

为什么会这样?

1 个答案:

答案 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")