Jos*_*ehl 7 functional-programming coding-style clojure
我一直在学习Clojure,因为我来自Ruby,在Java背景之前,我在程序上思考起来很困难.
有没有更"'lispy'方式来编写这段代码,还是这样可以吗?
(defn foo
([s t]
(let [x (+ 4 (- t s))]
(if (> 2 (if (> 6 x)
x
6)
x)
x
2))))
Run Code Online (Sandbox Code Playgroud)
sep*_*p2k 15
在clojure中,与任何其他语言一样,通常最好在适用的时候使用内置函数.因为clojure有一个min和一个max函数,所以你可以用以下代码替换你if的:
(max 2 (min 6 x))
Run Code Online (Sandbox Code Playgroud)
如果clojure的标准库中不存在这些函数,我建议定义它们,因为将逻辑放入min和max放入它们自己的函数会导致代码比在foo函数中使用它们更好.
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |