这是我的声明:
unless (parameter.values.any? "" || parameter.values.any? 0 || parameter[:num_units].eql? 0 || parameter[:num_units].nil? || parameter[:num_units].empty?)
这是我得到的错误:
: syntax error, unexpected tINTEGER, expecting ')' ...? "" || parameter.values.any? 0 || parameter[:num_units].eql... ... ^
编辑1
基本上我想做的是检查传入的任何参数的值是nil
,""
还是0
。
答案 0 :(得分:1)
在.any?
函数的参数周围添加括号:
(parameter.values.any?("") || parameter.values.any?(0) || parameter[:num_units].eql?(0) || parameter[:num_units].nil? || parameter[:num_units].empty?)
=> true
整行的圆括号也可能是不必要的。
答案 1 :(得分:0)
正如前面的答案所提到的,括号...也使它更易读。尽管如此,这对于单行来说是一个可怕的条件。
如果要缩短它,可以将其更改为:
unless (parameter.values & ["", 0]).any? || [0, nil, []].include?(parameter[:num_units])
({[0, nil, []]
数组假定您要检查的parameter[:num_units]
的空值是一个数组-如果它是一个散列,则显然切换[0, nil, {}]
的比较数组