在 Clojure 中的 cond 语句内格式化大型子句的推荐方法是什么?
例如:
(cond
(> (large-function large-arg1
large-arg2
large-arg3)
long-var-name))
(->> (iterate #(* % 6) 1)
(take 10)
(apply +))
(> (large-function large-arg4
large-arg5
large-arg6)
long-var-name))
(->> (iterate #(* % 6) 1)
(take 10)
(apply +))
(> (large-function large-arg7
large-arg8
large-arg9)
long-var-name))
(->> (iterate #(* % 6) 1)
(take 10)
(apply +)))
如果结果与条件位于同一行,则结果会过于缩进,但如果结果和条件位于不同行,则很容易丢失条件与结果的关系。这似乎是 Common Lisp 风格 cond 很有用的情况,但添加括号(在 Clojure 的情况下可能是括号)似乎不是推荐的做法。
最佳答案
在许多情况下,像这样的问题默认为“按照 emacs 的方式格式化”。并不是说我本质上支持这种哲学。最终还是取决于你的审美
简而言之,我喜欢:
(cond
(clause1) (action)
(clause2) (action)
对于像你这样很长的内容,我喜欢添加一些额外的换行符作为视觉分隔符:
(cond
(clause)
(action)
(clause2)
(action2)
所以我会格式化你的代码:
(cond
(> (large-function large-arg1
large-arg2
large-arg3)
long-var-name)
(->> (iterate #(* % 6) 1)
(take 10)
(apply +))
(> (large-function large-arg4
large-arg5
large-arg6)
long-var-name)
(->> (iterate #(* % 6) 1)
(take 10)
(apply +))
(> (large-function large-arg7
large-arg8
large-arg9)
long-var-name)
(->> (iterate #(* % 6) 1)
(take 10)
(apply +)))
关于clojure - cond 与大子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9105094/