<<<<<<< HEAD Clojure垃圾函数系列-「letfn」 ======= Clojure垃圾函数系列-「letfn」 >>>>>>> 24b6b53 ( 【init】) <<<<<<< HEAD
UP | HOME
<<<<<<< HEAD
=======
>>>>>>> 24b6b53 ( 【init】)

Clojure垃圾函数系列-「letfn」
发布于 8 08, 2018 by ThinkCat.

<<<<<<< HEAD

Table of Contents

  • 函数样例
  • 说明一下
  • =======

    Table of Contents

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

    <<<<<<< HEAD

    函数样例

    =======

    函数样例

    >>>>>>> 24b6b53 ( 【init】)
    ;;样例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的内部计算,有副作用的无返回值。

    <<<<<<< HEAD

    说明一下

    =======

    说明一下

    >>>>>>> 24b6b53 ( 【init】)

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

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

    毕竟是用来拯救手残的。