2015-06-25 3 views
13

Я использую линт Ruby, в Atom и для некоторых линий дает следующее предупреждение:Что означает "(...), интерпретируемое как сгруппированное выражение" означает?

(...) interpreted as grouped expression 

Пример строка, которые получают сообщения в этом предупреждение заключается в следующем:

elsif not (params[:vacancy].nil? or params[:vacancy]['company_id'].nil? or params[:vacancy]['company_id'] == "0") 

Как следует, что линия должна быть улучшена, чтобы предупреждение исчезло?

+0

[Википедия] (https:. //en.wikipedia. org/wiki/Ground_expression) говорит, что выражение Ground не имеет свободных переменных.Я запомню эту ошибку, так как Ruby определил, что ваше условие можно вычислить во время компиляции. Но я не знаю рубина, я просто основываю это на Термин – Binnut

ответ

12

Это предупреждение

(...) interpreted as grouped expression 

А это значит, что именно он говорит: в Ruby, круглые скобки могут использоваться для трех целей, выражение группировки, списки параметров и списки аргументов. Это предупреждение выдается, когда Ruby думает, что вам нужен список аргументов, но вместо этого написал сгруппированное выражение. Наиболее распространенной причиной является пробел между именем сообщения и списка аргументов в сообщении отправить так:

foo.bar (1, 2) 

Это будет интерпретироваться не как список аргументов для отправки сообщений, а скорее сгруппированных выражение, которое в данном конкретном случае является SyntaxError.

В вашем конкретном случае предупреждение кажется ложным.

+0

Спасибо. Я предполагаю, что другого решения нет, но абстрагировать условие на var? Что бы не было плохо, так или иначе, учитывая сложность большинства строк, для которых я получаю это. –

5

Попробуйте удалить пространство между not и скобкой

0

Предупреждение, которое я получаю, связано с самим MRI Ruby (с опциями -wc), и я думаю, что у вас есть опечатка. Сообщение, которое я получаю, не имеет слова «заземлено», но «сгруппировано».

Скобка в Ruby может использоваться для одной из двух вещей, группировать выражения или отмечать список аргументов функции или метода.

Это сообщение об ошибке относится к этим двум параметрам, Ruby рассматривает его как выражение. Обратите внимание, что в Ruby вы можете определить метод «not».

И в этом конкретном случае не имеет значения, в каком направлении Ruby интерпретирует скобки. .

Один из способов избавиться от сообщения, чтобы удалить пробел между «нет (» Если вы думаете, что это ненормальный, я согласен с вами

Смежные вопросы