我們今天來用小小的一加一等於二,說明Clojure的List和一般程式語言有蠻大的差別。
List是Clojure程式的最小執行單位,像我們之前常常舉例的一加一等於二啦
tutorial.core=> (+ 1 1)
2
那,沒有statement和expression的差別這句話究竟是什麼意思呢?
關於statement和expression的說明,我們又請出了javascript來舉例:)
// 1 === 1 是陳述式
if( 1===1 ){
console.log("It's true")
}
// 或者叫函式宣告式,長這樣
function statementExample = {
// (略)
}
// 有命名的function
const expressionExample = function name() {
}
// 也可以不命名
var expressionExample = function () {
console.log('我是函式表達式')
}
// 箭頭函式
var expressionExample = () => console.log('我是函式表達式')
// 來調用看看
expressionExample
//變數表達的是整個函式
ƒ () {
console.log('我是函式表達式')
}
// 傳進參數的函式
var arrowFunction = function (x) {
return x + 1
}
// 箭頭函式也可以寫成
var arrowFunction = (x) => x + 1
同樣的如果用method方式撰寫
def one_plus_one
1 + 1 = 2
end
所以有沒有覺得clojure的List雖然是小小的()
小括弧,寫法也很簡單,但功能強大呀!
Clojure 程式是直接以「資料data」呈現的,
第一步是先把文字characters
定義透過Reader
化成data structures
這部分是和其他語言例如(Java)最不一樣的地方。(圖片來源:clojure官網)
我們可以說,一開始舉例的(+ 1 1)這個List,
就是對一個「表達式(expression)」求值的處理
更進一步說明,Clojure是由reader
一次讀取一個form
,再evalute出 from 代表的值
沒想到一個基本的List collection的data structure就可以寫這麼長篇幅(話太多),但是這些觀念都很重要唷!
那麼,明天及後天請繼續收看collection的第三、第四集:Maps & Sets!