Почему Руби жалуется на это, если не набор параметров? - PullRequest
0 голосов
/ 29 июня 2018

Это мое утверждение:

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 голосов
/ 29 июня 2018

Как упоминалось в предыдущем ответе, скобки ... они также делают его более читабельным. Несмотря на это, это ужасное условие для одной строки ..

если вы хотите сократить его, вы можете изменить его на:

unless (parameter.values & ["", 0]).any? || [0, nil, []].include?(parameter[:num_units])

(массив [0, nil, []] предполагает, что пустое значение parameter[:num_units], которое вы проверяете, является массивом - если вместо этого используется хеш, тогда, очевидно, переключите массив сравнения на [0, nil, {}]

0 голосов
/ 29 июня 2018

Добавьте круглые скобки вокруг аргументов в функции .any?:

(parameter.values.any?("") || parameter.values.any?(0) || parameter[:num_units].eql?(0) || parameter[:num_units].nil? || parameter[:num_units].empty?)
=> true

Скобки вокруг всей строки строки, вероятно, тоже не нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...