在绑定内打印值的惯用方法是什么let?
当我开始使用 Clojure 进行开发时,我在 REPL 中编写代码,然后将其转换为简单的let表达式。作为一个初学者,我在这个(简单的)转换阶段经常犯错误。
(let [a (aFn ...)
b (bFn ... a)]
;; error above
)
Run Code Online (Sandbox Code Playgroud)
所以我会把它改回类似的东西,基本上是内联的东西:
(println "a is" (aFn ...))
(println "b is" (bFn ... (aFn ...)))
(let [a (aFn ...)
b (bFn ... a)]
;; ...
)
Run Code Online (Sandbox Code Playgroud)
由于 Clojure 的出色性能(不变性、引用透明性......),它在大多数情况下都可以工作。
现在我做了一些事情:
(let [a (aFn ...)
_ (println "a is" a)
b (bFn ... a)
_ (println "b is" b)]
;; ...
)
Run Code Online (Sandbox Code Playgroud)
这是一个进步,但仍然感觉很笨拙。执行此操作的正确方法是什么?
您可以定义一个返回其参数的打印函数:
(defn cl-print [x] (doto x (print)))
Run Code Online (Sandbox Code Playgroud)
然后,只需封装表达式即可:
(let [a (cl-print (aFn ...))
b (cl-print (bFn ... a))]
...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1792 次 |
| 最近记录: |