2013-02-13 12 views
18

W Pythonie można użyć „pass” oświadczenie nie robić nic:coffeescript odpowiednik python „pass” oświadczenie

if true: 
    pass 

czy istnieje podobna deklaracja w coffeescript? Próbuję wykonać instrukcję zmiany i nic nie robić, jeśli pewne warunki są spełnione.

switch variable: 
    when 5 then pass 
    else do variable 

Odpowiedz

16

przeciwieństwie do Pythona, puste bloki są (zazwyczaj) obowiązują w coffeescript. Więc może po prostu użyć:

switch variable: 
    when 5 then 
    else 
    variable 

Należy pamiętać, że bez then nie zostanie skompilowany, które znajdę trochę dziwne. Działa to dość ogólnie, ale:

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

jest całkowicie poprawny CoffeeScript.

+3

Może być ważne , ale wydaje się nieco niejasne, aby przeczytać. – 7yl4r

6

Zawsze używam średnik na to:

switch variable 
    when 5 then ; 
    else do variable 

To dlatego, że w javascript, średnik jest ważne oświadczenie, które również dzieje się nic zrobić.

Aktualizacja: Właśnie pomyślałem o innym interesującym sposobie zrobienia tego. Można zdefiniować pass jako zmienną globalną i ustawić ją na undefined:

window.pass = undefined 

switch variable 
    when 5 then pass 
    else do variable 

Jedyne co trzeba zwrócić uwagę jest użycie pass jako zmiennej lokalnej lub redefinicji globalnego pass zmienną. To by złamało twój kod.

Jeśli używasz kompilatora zamknięcia Google, można opisywanie tej zmiennej tak, że jest stała:

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

Ale wtedy musiałby iść na początku każdego pliku. Można jednak napisać własny preprocesor, aby zrobić to automatycznie.

8

Ponieważ każde wyrażenie ma wartość w CoffeeScript, słowo kluczowe pass, jeśli istniało, byłoby równoważne wartości undefined. Tak więc, można zdefiniować

pass = undefined 

a następnie użyć pass podobnie jak w Pythonie:

switch variable 
    when 5 
    pass 
    else 
    do variable 
+0

IMO powinno być poprawną odpowiedzią – onetwopunch

16

jestem szczęśliwym użytkownikiem

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

od null jest już w języku i nie semantycznie transportu, które sens „nic”.

+0

To jest moja ulubiona odpowiedź, ale zastanawiam się, czy użycie ';' byłoby (bardzo małe) bardziej wydajne niż 'null'? – 7yl4r

1

to sens dla mnie w coffeescript:

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

To kompiluje się do następujących JS:

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

Uwaga: Nie należy używać NULL jak @flow sugeruje, ponieważ wstawia niepotrzebne oświadczenie takie jak to

+1

działa to dobrze w przypadku instrukcji switch, ale nie w pełni wypełnia się dla 'pass', ponieważ nie może być użyte w if/else like pass. – 7yl4r