Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我不能用ruby做这个?_Ruby - Fatal编程技术网

为什么我不能用ruby做这个?

为什么我不能用ruby做这个?,ruby,Ruby,如果我这样做 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' 有时,解析器无法猜测您是如何对参数进行分组的 在您的示例中,它

如果我这样做

  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'

有时,解析器无法猜测您是如何对参数进行分组的

在您的示例中,它正在解释
“已更改的数据库”| |!第[0]行。在传递给
include?
的参数中以?
开头,当遇到下一个标记
'-'
时,它将阻塞,这将毫无意义

添加括号以消除歧义可以解决问题,例如:

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...
如果你真的非常讨厌括号,你也可以切换到使用
而不是
|
,后者优先级较低,稍后会应用,例如:

if !row[0].include?('Changed database') || !row[0].starts_with?('---') || !row[0].include?("rows affected") || !row[0].nil? || !row[0] == ""

或者使用
而不是
|
,它的优先级较低。这就是为什么Ruby中的“可选”括号不那么可选的原因。人们必须承认,编写无括号的DSL看起来不错,但除此之外,这并不是一个好主意。
if !row[0].include? 'Changed database' or !row[0].starts_with? '---' or !row[0].include? "rows affected" or !row[0].nil? or !row[0] == ""