在Python可以使用的「通行證」語句來什麼都不做:的CoffeeScript等同蟒蛇的「通行證」聲明
if true:
pass
是否有CoffeeScript的一個類似的聲明? 我試圖做一個switch語句,如果某些條件得到滿足,什麼也不做。
switch variable:
when 5 then pass
else do variable
在Python可以使用的「通行證」語句來什麼都不做:的CoffeeScript等同蟒蛇的「通行證」聲明
if true:
pass
是否有CoffeeScript的一個類似的聲明? 我試圖做一個switch語句,如果某些條件得到滿足,什麼也不做。
switch variable:
when 5 then pass
else do variable
不像在Python,空塊在CoffeeScript中(通常情況下)有效。所以,你可以簡單地使用:
switch variable:
when 5 then
else
variable
注意,如果沒有then
不能編譯,我覺得有點奇怪。儘管如此,它的工作原理相當普遍:
if x
else if y
something()
else
somethingElse()
是完全有效的CoffeeScript。
我總是用分號此:
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;`
但隨後會去在每個文件的開頭:
如果你使用谷歌的關閉編譯器,你可以這樣,這是一個恆定的註釋這個變量。不過,您可以編寫自己的預處理器來自動執行此操作。
因爲每個表達式在CoffeeScript中都有一個值,因此pass
關鍵字(如果存在)將等於值undefined
。所以,你可以定義
pass = undefined
然後用pass
就像在Python:
switch variable
when 5
pass
else
do variable
IMO這應該是正確的答案 – onetwopunch 2015-10-22 00:23:00
我是
switch x
when 1
null
when 2
y = 3
else
y = 4
一個幸福的用戶,因爲null
已經在語言和語義上沒有運輸的「無」這個意思。
這是我最喜歡的答案,但是我想知道用';'會比'null'更有效嗎? – 7yl4r 2014-10-07 16:16:05
這是有道理的,以我的CoffeeScript:
switch variable
when "a" then doSomething()
when "b" then break
這編譯以下JS:
switch (variable) {
case "a":
doSomething();
break;
case "b":
break;
}
注意:你不應該使用空像@flow暗示,因爲它插入這樣不必要的陳述
null;
這可以很好地與switch語句結合使用,但不能完全填充'pass',因爲它不能在if/else類似的pass中使用。 – 7yl4r 2014-10-07 16:10:56
它可能是有效的,但看起來有點不清楚。 – 7yl4r 2014-10-07 16:13:23