iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
自我挑戰組

從零開始的 clojure系列 第 18

Day 18 Clojure - Function- Calling Function

  • 分享至 

  • xImage
  •  

前言

大家好,我是對於 Clojure 一無所知的菜鳥小白工程師。

今天我們要來學習 Calling Functions 呼叫函數。

try Clojure here: https://qa-mktg.codingrooms.com/compiler/clojure/

Calling Functions

到目前為止,我們其實已經使用到了很多函數呼叫(Calling Functions),比如:

(+ 1 2 3 4)
(* 1 2 3 4)
(first [1 2 3 4])

請記住,所有的 Clojure 操作都具有相同的語法:開始括號、運算子、運算元、結束括號。

函數呼叫(Calling functions)只是另一個術語,表示 運算子是一個函數或函數表達式(返回函數的表達式) 的操作。

像是下方的例子,就不是有效的函數呼叫,因為數字和字符串不是函數:

(1 2 3 4)
("test" 1 2 3)

我們接著來看一個返回 + (加法)函數的函數表達式:

(or + -)
; => #<core$_PLUS_ clojure.core$_PLUS_@76dace31>

這一串返回值是加法函數的字符串表示。由於 or 函數的返回值是第一個真值,這裡加法函數是真值,所以返回了加法函數。

我們也可以將這個表達式用作另一個表達式中的運算子:

((or + -) 1 2 3)
; => 6

因為(or + -)返回 +,這個表達式的值是 1、2 和 3 的和,返回 6 。

下方再舉一些有效的函數呼叫的例子,它們每個都返回 6:

((and (= 1 1) +) 1 2 3)
; => 6

((first [+ 0]) 1 2 3)
; => 6

在第一個例子中, and 的返回值是第一個假值或最後一個真值。在這個例子中,+是最後一個真值,所以它被返回,然後應用於引數 1、2和 3,返回 6。

在第二個例子中, first 的返回值是序列中的第一個元素,在這種情況下是 +

小結

今天我們學習了函數呼叫( Calling Functions), 在前幾章節我們就已經在使用了。

它只是另一個術語,用來表示 運算子是一個函數或函數表達式(返回函數的表達式) 的操作。

參考文章


上一篇
Day 17 Clojure- Data Structures - Review
下一篇
Day 19 Clojure - Function- Defining Functions
系列文
從零開始的 clojure23
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言