在做4clojure练习时,一个目标是提供一个正确的答案,一个可选的目标是尽可能提供最短的解决方案(空格不计入),另一个代码为高尔夫。然后,您可以与其他解决方案进行比较。我该如何重构Clojure源代码?
在做练习时我第一个找到一个正确的答案。然后,我将手册重构应用于我的源代码,其中包括将变量名称重命名为单个字符。例如,在应用这个基本步骤之后,我的代码可能看起来像这样。
(fn f[s]
(if (empty? s)
{}
(let [[k & r] s
[v n] (split-with number? r)]
(assoc (f n) k v))))
相当不可读的人,但得分4Clojure代码高尔夫比赛更好,因为这样可以节省大量的字符。
为了好奇,你会如何在emacs中实现自动化? clojure.core中有重构函数可以帮助吗?我没有找到任何。
Yeh thnx if-let或seq,我知道他们。实际上,这里提取的代码仅用于说明目的。感谢您与Kibit的链接。其实我正在研究它的源代码,并发现我不知道的新功能:走路和prewalk。从文档中它真的闻起来像是我正在寻找的东西。谢谢 :-) –