主页
主页
文章目录
  1. Table of Contents
  2. 1 函数样例
  3. 2 说明一下

Clojure垃圾函数系列-「letfn」

Table of Contents

letfn实际上是一个可有可无的函数,它的存在大概是想再拯救一下手残的你。

1 函数样例

;;样例1
(letfn [(plus [x] (+ 2 x)) (gg [y] (- 22 y))]
;;do something with plus and gg
(+ (plus 11) (gg 2))
)

;; result: 33

;;样例2
(defn do-something [item]
;;do something using letfn
(letfn [(eat [x] (println "eat:" x))
(sleep [y] (println "sleep:" y))]

;;do
(eat item)
(sleep item)
)

)

(do-something "hehe")

;;result: nil
;;打印以下内容:
;; eat: hehe
;; sleep: hehe

样例1,就返回一个数值而已。然后样例2,传入一个参数,参与letfn的内部计算,有副作用的无返回值。

2 说明一下

letfn允许像解构绑定数据一样,去声明一个函数。当然,可以不用这么写,可以直接把函数写到外部,然后去调用。

也没什么不对,只是对于一些辅助性质的专用小函数,放这里还是挺方便的。

毕竟是用来拯救手残的。

Author: HeHe

Created: 2018-09-28 Fri 22:41

Validate