2013-02-13 18 views
18

在Python可以使用的「通行證」語句來什麼都不做:的CoffeeScript等同蟒蛇的「通行證」聲明

if true: 
    pass 

是否有CoffeeScript的一個類似的聲明? 我試圖做一個switch語句,如果某些條件得到滿足,什麼也不做。

switch variable: 
    when 5 then pass 
    else do variable 

回答

16

不像在Python,空塊在CoffeeScript中(通常情況下)有效。所以,你可以簡單地使用:

switch variable: 
    when 5 then 
    else 
    variable 

注意,如果沒有then不能編譯,我覺得有點奇怪。儘管如此,它的工作原理相當普遍:

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

是完全有效的CoffeeScript。

+3

它可能是有效的,但看起來有點不清楚。 – 7yl4r 2014-10-07 16:13:23

6

我總是用分號此:

switch variable 
    when 5 then ; 
    else do variable 

這是因爲在JavaScript中,分號是一個有效的聲明恰好也是無可奈何。

更新:我只是想到了這樣做的另一種有趣的方式。你可以定義pass爲全局變量,並將其設置爲undefined

window.pass = undefined 

switch variable 
    when 5 then pass 
    else do variable 

你必須注意使用pass爲局部變量或重新定義全局變量pass唯一。這會破壞你的代碼。

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

但隨後會去在每個文件的開頭:

如果你使用谷歌的關閉編譯器,你可以這樣,這是一個恆定的註釋這個變量。不過,您可以編寫自己的預處理器來自動執行此操作。

8

因爲每個表達式在CoffeeScript中都有一個值,因此pass關鍵字(如果存在)將等於值undefined。所以,你可以定義

pass = undefined 

然後用pass就像在Python:

switch variable 
    when 5 
    pass 
    else 
    do variable 
+0

IMO這應該是正確的答案 – onetwopunch 2015-10-22 00:23:00

16

我是

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

一個幸福的用戶,因爲null已經在語言和語義上沒有運輸的「無」這個意思。

+0

這是我最喜歡的答案,但是我想知道用';'會比'null'更有效嗎? – 7yl4r 2014-10-07 16:16:05

1

這是有道理的,以我的CoffeeScript:

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

這編譯以下JS:

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

注意:你不應該使用空像@flow暗示,因爲它插入這樣不必要的陳述

null; 
+1

這可以很好地與switch語句結合使用,但不能完全填充'pass',因爲它不能在if/else類似的pass中使用。 – 7yl4r 2014-10-07 16:10:56