2013-02-13 7 views
18

In Python si può utilizzare l'istruzione 'passaggio' di non fare nulla:CoffeeScript equivalente di pitone 'pass' dichiarazione

if true: 
    pass 

C'è una dichiarazione simile a CoffeeScript? Sto provando a fare un'istruzione switch e non fare nulla se sono soddisfatte determinate condizioni.

switch variable: 
    when 5 then pass 
    else do variable 

risposta

16

differenza in Python, blocchi vuoti sono (di solito) valido in CoffeeScript. Così si può utilizzare semplicemente:

switch variable: 
    when 5 then 
    else 
    variable 

Nota che senza la then non si compila, che trovo un po 'strano. Ciò funziona piuttosto in generale, tuttavia:

if x 
else if y 
    something() 
else 
    somethingElse() 

è perfettamente valido CoffeeScript.

+3

Potrebbe essere valida , ma sembra un po 'poco chiaro da leggere. – 7yl4r

6

uso sempre un punto e virgola per questo:

switch variable 
    when 5 then ; 
    else do variable 

Questo perché in javascript, un punto e virgola è una dichiarazione valida che avviene anche per non fare nulla.

Aggiornamento: ho appena pensato a un altro modo interessante di farlo. Si potrebbe definire pass come una variabile globale e impostarlo undefined:

window.pass = undefined 

switch variable 
    when 5 then pass 
    else do variable 

L'unica cosa che dovete guardare fuori per sta usando pass come una variabile locale o ridefinire la variabile globale pass. Questo potrebbe infrangere il tuo codice.

Se si utilizza il compilatore di chiusura di Google, si potrebbe annotare questa variabile in modo che esso è una costante:

`/** @const */ var pass;` 

Ma allora avrebbe dovuto andare all'inizio di ogni file. Potresti scrivere il tuo preprocessore per farlo automaticamente, però.

8

Poiché ogni espressione ha un valore in CoffeeScript, una parola chiave pass, se esistente, sarebbe equivalente al valore undefined. Quindi, è possibile definire

pass = undefined 

e quindi utilizzare pass proprio come in Python:

switch variable 
    when 5 
    pass 
    else 
    do variable 
+0

IMO questa dovrebbe essere la risposta corretta – onetwopunch

16

Sono un utente felice di

switch x 
    when 1 
    null 
    when 2 
    y = 3 
    else 
    y = 4 

dal null è già nella lingua e fa semanticamente di trasporto che significato di 'nulla'.

+0

Questa è la mia risposta preferita, ma mi chiedo se usare ';' sarebbe (molto piccolo) più efficiente di 'null'? – 7yl4r

1

Questo ha senso per me in CoffeeScript:

switch variable 
    when "a" then doSomething() 
    when "b" then break 

Questo compila ai seguenti JS:

switch (variable) { 
    case "a": 
     doSomething(); 
     break; 
    case "b": 
     break; 
} 

Nota: Non si deve usare come nulla @flow suggerisce, perché inserisce un dichiarazione non necessaria come questa

null; 
+1

funziona bene con le istruzioni switch, ma non completa completamente 'pass' perché non può essere utilizzato in un if/else come il passaggio può. – 7yl4r

Problemi correlati