16、Clojure宏编程:从基础到实践

Clojure宏编程:从基础到实践

1. 语法抽象与 ->

在Clojure编程中,代码常常会包含大量嵌套的函数调用。例如,有如下函数:

(defn read-resource
  "Read a resource into a string"
  [path]
  (read-string (slurp (clojure.java.io/resource path))))

要理解这个函数体,需要从最内层的 (clojure.java.io/resource path) 开始,从右向左逐步分析每个函数的结果如何传递给下一个函数。这种从右向左的执行顺序与非Lisp程序员的习惯相反。不过,随着对Clojure编程的熟悉,这类代码会变得容易理解。

为了能以更熟悉的从左到右、从上到下的方式阅读Clojure代码,可以使用内置的 -> 宏(也称为线程宏或“stabby”宏)。使用 -> 宏可以将上述函数重写为:

(defn read-resource
  [path]
  (-> path
      clojure.java.io/resource
      slurp
      read-string))

可以将其看作一个从上到下的管道。首先, path 被传递给 io/r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值