Ruby为什么会对此抱怨,除非设置了参数?

时间:2018-06-28 21:50:45

标签: ruby-on-rails ruby ruby-on-rails-5

这是我的声明:

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

2 个答案:

答案 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, {}]的比较数组