LiveScript
外表
| 編程範式 | 多範式, 函數式, 面向對象 |
|---|---|
| 設計者 | Jeremy Ashkenas, Satoshi Murakami, George Zahariev |
| 編程員 | (同上) |
| 第一次出現 | 7月14號[1] |
| 穩定版本 | 1.6.1
|
| 類型系統 | 動態, 弱類型 |
| 有效範圍 | 詞法作用域 |
| 操作系統 | 跨平台 |
| 軟件授權 | MIT |
| 副檔名 | .ls |
| 網站 | livescript.net |
| 啟發語言 | |
| JavaScript, Haskell, CoffeeScript, F# | |
LiveScript 係一種函數式嘅編程語言,可以透過源到源編譯轉譯成JavaScript。佢由 CoffeeScript 嘅作者 Jeremy Ashkenas,同 Satoshi Murakami、George Zahariev 以及其他唔少貢獻者一齊創作。[2] (個名有可能係向 JavaScript 早期名稱致敬:喺 1995 年正式發佈之前嗰幾個月,JavaScript 曾經叫做 LiveScript。[3])
語法
[編輯]LiveScript 係 CoffeeScript 嘅間接後代。[4]
下面係一個用 LiveScript 寫嘅 Hello World 程式,同時亦都兼容 CoffeeScript:
hello = ->
console.log 'hello, world!'
呼叫函數嘅時候可以用空括號 hello(),不過 LiveScript 會將感嘆號視為「零參數函數呼叫」嘅單字符簡寫:hello!
LiveScript 仲引入咗一啲其他唔兼容嘅語法習慣:
名稱改寫
[編輯]喺編譯期間,LiveScript 嘅解析器會隱式噉將短橫線命名法(即係帶短橫線嘅變量同函數名)轉換成駝峰命名法。
hello-world = ->
console.log 'Hello, World!'
喺呢個定義之下,以下兩種呼叫方式都係合法嘅。不過,一般建議用返同一套短橫線語法去呼叫。
hello-world!
helloWorld!
呢個機制唔會妨礙開發者顯式噉使用駝峰命名法或者蛇形命名法。不過,喺符合 LiveScript 習慣用法嘅程式碼入面,短橫線命名法都幾常見。[5]
管道
[編輯]管道運算符 |> 會將運算符左邊表達式嘅結果,當成參數傳畀右邊嘅表達式。LiveScript 支援呢個特性;其他一啲函數式語言(例如 F# 同 Elixir)亦都有類似支援。不過,喺 F# 入面,傳入嘅係最後一個參數,而喺 Elixir 入面就係第一個參數。
"hello!" |> capitalize |> console.log
# > Hello!
將運算符當成函數
[編輯]當用括號包住嘅時候,好似 not 或 + 呢啲運算符,可以放入管道入面,或者好似普通函數噉呼叫。
111 |> (+) 222
# > 333
(+) 1 2
# > 3
參考資料
[編輯]- ↑ "LiveScript Releases". GitHub. 原著喺2025-12-31歸檔. 喺2021年2月21日搵到.
- ↑ "LiveScript contributors page". GitHub. 原著喺2026-01-01歸檔. 喺2015年6月20日搵到.
- ↑ "Chapter 4. How JavaScript Was Created". speakingjs.com. 原先內容歸檔喺2020-02-27. 喺2017-11-21搵到.
- ↑ "LiveScript - a language which compiles to JavaScript". 原著喺2021-05-21歸檔. 喺2026-01-31搵到.
- ↑ 〈prelude.ls - 一個以函數式為導向嘅 LiveScript 工具庫〉。原著喺2025-12-17歸檔。喺2026-01-31搵到。