2015-06-25 4 views
13

Io sto usando un linter Ruby in Atom e per alcune linee dà il seguente avviso:Cosa significa "(...) interpretato come espressione raggruppata" significa?

(...) interpreted as grouped expression 

Un esempio di una linea che ottiene di questo avviso è questo:

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

Come dovrebbe che linea essere migliorata per far sparire l'avviso?

+0

[Wikipedia] (https:. //en.wikipedia. org/wiki/Ground_expression) dice che un'espressione di Ground non ha variabili libere Interpreta questo errore in quanto Ruby ha determinato che la tua condizione è in grado di essere calcolata in fase di compilazione, ma non conosco il ruby, sto solo basandomi su il termine – Binnut

risposta

12

L'avvertimento è

(...) interpreted as grouped expression 

E significa esattamente quello che dice: in Ruby, tra parentesi può essere utilizzato per tre scopi, espressione di raggruppamento, liste di parametri e liste di argomenti. Questo avviso viene emesso quando Ruby pensa di volere un elenco di argomenti, ma invece di scrivere un'espressione raggruppata. La causa più comune è uno spazio tra il nome del messaggio e la lista degli argomenti in un messaggio di inviare in questo modo:

foo.bar (1, 2) 

Questo sarà interpretato non come una lista di argomenti per il messaggio di invio, ma piuttosto un raggruppato espressione, che, in questo caso particolare, è un SyntaxError.

Nel tuo caso particolare, l'avviso sembra essere un falso positivo.

+0

Grazie Immagino che non ci sia altra soluzione se non quella di astrarre la condizione in una variabile, il che non sarebbe comunque una cosa negativa vista la complessità della maggior parte delle linee per le quali sto ottenendo questo. –

5

tenta di rimuovere lo spazio tra not e la parentesi

0

L'avviso che ricevo proviene da MRI Ruby stesso (con le opzioni -wc) e penso che ci sia un errore di battitura. Il messaggio che ottengo non ha la parola "grounded" ma "grouped".

Parentesi in Ruby può essere utilizzata per una delle due cose, per raggruppare espressioni o per contrassegnare l'elenco di argomenti di una funzione o metodo.

Quello che il messaggio di errore sta dicendo è che tra queste due opzioni, Ruby lo tratta come un'espressione. Nota che in Ruby è possibile definire un metodo chiamato "not".

E in questo caso particolare, non importa in quale modo Ruby interpreta la parentesi. .

Un modo per sbarazzarsi del messaggio è di eliminare lo spazio tra "non (" Se pensi che questo è irregolare, sono d'accordo con te