2012-11-28 64 views
3

是否有任何CoffeeScript的具體弄虛作假,這將使這個看起來更整潔:CoffeeScript的重構

index = (-> 
      if segment == 'index' 
      return 0 
      else if segment == 'inbox' 
      return 2 

      1 
     )() 

回答

7

是的,switch表達:

index = switch segment 
    when 'index' then 0 
    when 'inbox' then 2 
    else 1 
0

是的,CoffeeScript的特定存在運營商:

index = {'index': 0, 'inbox': 2}[segment] ? 1 

您還可以使用內聯if語句來擺脫函數調用:

index = if segment == 'index' then 0 else if segment == 'inbox' then 2 else 1 

但是,內聯,如果不會有任何困難在直接的JavaScript:

index = segment == 'index' ? 0 : segment == 'inbox' ? 2 : 1 
1

你可以通過使用\字符使用內聯if ... then ... else語句分成多行(爲便於閱讀)。

index = if segment == 'index' then 0 \ 
     else if segment == 'inbox' then 2 \ 
     else 1 

這是有用的,如果你的條件邏輯是一個簡單的switch塊太複雜。