if !row[0].include? 'Changed database' || !row[0].starts_with? '---' || !row[0].include? "rows affected" || !row[0].nil? || !row[0] == ""
如果我这样做
if !row[0].include? 'Changed database'
它运行良好,但如果我执行多个条件,那么它会因这个错误而失败
SyntaxError: /Users/tamer/Sites/active/app/models/account.rb:42: syntax error, unexpected tSTRING_BEG, expecting kTHEN or ':' or '\n' or ';'
...ase' || !row[0].starts_with? '---' || !row[0].include? "rows...
最佳答案
有时解析器无法猜测您如何对参数进行分组。
在您的示例中,它正在解释 'Changed database' || !row[0].starts_with?
作为传递给 include?
的参数,当它遇到下一个标记时会窒息,'---'
,这就没有意义了。
加括号把歧义搞清楚就解决问题了,例如:
if !row[0].include?('Changed database') || !row[0].starts_with?('---') || !row[0].include?("rows affected") || !row[0].nil? || !row[0] == ""
如果您真的非常讨厌括号,您也可以改用 或
而不是 ||
,后者的优先级较弱,稍后会应用,例如:
if !row[0].include? 'Changed database' or !row[0].starts_with? '---' or !row[0].include? "rows affected" or !row[0].nil? or !row[0] == ""
关于ruby - 为什么我不能用 ruby 做这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7326246/