粗略看過 CoffeeScript 的語法特徵
今天我來說個新的程式語言,CoffeeScript 。 CoffeeScript 的編譯器會將它的程式碼轉譯成 JavaScript 程式碼。它產生的 JavaScript 程式碼基本上可以在任何 JavaScript 環境中運行。
我沒有用過這玩意,只是它的語法令我覺得有點意思。CoffeeScript 的設計目的,在為 JavaScript 環境提供一個「更整潔的語法」。我大致看了一下它的程式碼範例,它大部份的語法混合了 Python 與 Ruby 的風格,但程式碼區塊(匿名函數)這部份則是採用 C# 語法。 我們來看看「Your first cup of CoffeeScript, Part 1: Getting started」這篇文章中的範例程式碼,初步認識 CoffeeScript 的語法。
具 Python 特徵的語法是其程式段落格式採用 Python 風格,捨棄配對括號,而嚴格地使用縮排區分段落,但不用加 : 。
具 Ruby 特徵的語法是:
- 函數呼叫像 Ruby 一樣可以略去參數列的 () 括號。
- 字串竄寫是用 #{}。
- 後置條件式。
- Ruby 的 range 表達方式。
- 但不採用 Ruby 的迭代用法。
匿名函數則是 C# 格式,但將函數內文的連接符號從 => 改為 -> 。此外,若函數不接受參數,那代表參數列的 () 可以省略。
先看參考文章 Listing 2 的 CoffeeScript 程式碼:
用 Ruby 來讀的話,將是:
用 Python 來讀則是:
再看參考文章 Listing 5 的 CoffeeScript 程式碼:
按照 C# 風格可讀為:
但我另外想到一個問題,按照 CoffeeScript 縮排分段方式,匿名函數幾乎只能放在最後一個參數。
如果我要傳遞兩個匿名函數,我就不知道要如何縮排了。
例如 C# 的這一行 a_method( (i) => i+1, () => 1 )
,似乎就寫不出來。
它揉雜了許多程式語言的特徵,在我看來,有些表達風格顯得不一致。 從程式碼的字數來算,需要輸入的字數確實比較少了;但從文字閱讀的角度來看,似乎不是那麼容易看得明白。
樂多舊回應