gpt4 book ai didi

clojure - cond 与大子句

转载 作者:行者123 更新时间:2023-12-03 00:29:02 25 4
gpt4 key购买 nike

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com