我正在学习Clojure,我遇到了这个例子:
(defn people-in-scenes [scenes]
(->> scenes
(map :subject)
(interpose ", ")
(reduce str)))
Run Code Online (Sandbox Code Playgroud)
究竟->>做了什么?
Jos*_*osh 11
->>是"线程最后"的宏.它评估一个表单并将其作为最后一个参数传递给下一个表单.
您的代码相当于:
(reduce str (interpose ", " (map :subject scenes)))
Run Code Online (Sandbox Code Playgroud)
或者,以不同的方式看待它:
(reduce str
(interpose ", "
(map :subject scenes)))
Run Code Online (Sandbox Code Playgroud)
在阅读clojure代码时,几乎必须从"由内而外"或从"自下而上"这样做.线程宏允许您以某些人所说的更符合逻辑的顺序读取代码."拿一些东西,首先要做到这一点,接下来做,下一个......".
| 归档时间: |
|
| 查看次数: |
2563 次 |
| 最近记录: |