Что означает "(...), интерпретируемое как сгруппированное выражение" означает?
Я использую Ruby linter в Atom, и для некоторых строк он дает следующее предупреждение:
(...) interpreted as grouped expression
Пример строки, которая получает это предупреждение:
elsif not (params[:vacancy].nil? or params[:vacancy]['company_id'].nil? or params[:vacancy]['company_id'] == "0" )
Как улучшить эту линию, чтобы предупредить предупреждение?
Ответы
Ответ 1
Предупреждение
(...) interpreted as grouped expression
И это означает именно то, что он говорит: в Ruby круглые скобки могут использоваться для трех целей, группировки выражений, списков параметров и списков аргументов. Это предупреждение выдается, когда Ruby думает, что вам нужен список аргументов, но вместо этого написал сгруппированное выражение. Наиболее распространенной причиной является пробел между именем сообщения и списком аргументов в сообщении, отправляемом следующим образом:
foo.bar (1, 2)
Это будет интерпретироваться не как список аргументов для отправки сообщения, а скорее сгруппированное выражение, которое в данном конкретном случае является SyntaxError
.
В вашем конкретном случае предупреждение кажется ложным.
Ответ 2
Попробуйте удалить пробел между not
и скобкой
Ответ 3
Предупреждение, которое я получаю, связано с MRI Ruby (с параметрами -wc
), и я думаю, что у вас есть опечатка. Сообщение, которое я получаю, не имеет слова "заземлено", но "сгруппировано".
Скобка в Ruby может использоваться для одной из двух вещей, группировать выражения или отмечать список аргументов функции или метода.
Что такое сообщение об ошибке - это два этих параметра, Ruby рассматривает его как выражение. Обратите внимание, что в Ruby вы можете определить метод "not".
И в этом конкретном случае не имеет значения, каким образом Ruby интерпретирует скобки.
Один из способов избавиться от сообщения - удалить пробел между "not" ( "Если вы считаете, что это отвратительно, я согласен с вами".