大家好,我是對於 Clojure 一無所知的菜鳥小白工程師。
今天我們要來學習函數主體 Function Body
,以及去認識 Clojure 中「所有函數都是平等的
」 此一概念。
try Clojure here: https://qa-mktg.codingrooms.com/compiler/clojure/
在一個定義的函數中,Clojure 會自動返回函數主體中最後一個被計算的 forms。
而函數主體(Function Body),可以包含任何類型的 forms。
關於 Forms 的說明,請見 《Day 3 Clojure Syntax - Forms》
請看下方的例子,該函數的函數主體包含了三個 forms( (+ 1 304)
、 30
、"joe"
),當我們呼叫函數時,它只會輸出最後一個 forms,也就是 "joe"
:
(defn illustrative-function
[]
(+ 1 304)
30
"joe")
(illustrative-function)
; => "joe"
下面是另一個函數主體的例子,它使用了 if 表達式:
(defn number-comment
[x]
(if (> x 6)
"哇!真是個大數字!"
"那數字還好,我猜"))
(number-comment 5)
; => "那數字還好,我猜"
(number-comment 7)
; => "哇!真是個大數字!"
所有函數都是平等的。
根據書中的內容,我們總結以下兩點:
所有函數都是平等的
,包括基本運算符號如 +
-
、inc
和 map
,也包含我們自己 定義的函數
。如何應用
這些函數 。今天我們學習了 函數主體
(Function Body)是什麼,以及了解到在 Clojure 中「所有函數都是平等的」這樣的概念。接下來一章,我們將要學習什麼是 Anonymous Functions(匿名函數)。