(取5(范围))和(范围5)之间有什么区别

1 clojure

我刚刚开始学习Clojure,并且我已经看到了几个使用'take'函数来引用范围.

特别

(take 5 (range))
Run Code Online (Sandbox Code Playgroud)

这似乎是相同的

(range 5)
Run Code Online (Sandbox Code Playgroud)

两者都生成

(0 1 2 3 4)
Run Code Online (Sandbox Code Playgroud)

是否有风格或性能使用其中一个的原因?

Der*_*ger 5

一般来说,使用(range 5)可能性能更高,我认为它更具惯用性.但是,请记住,这需要人们知道创建时范围的范围.

如果最初的尺寸未知,或者在施工后可能会进行其他一些改造,那么take选择是非常好的.例如:

(->> (range) (filter even?) (drop 1) (take 5))
Run Code Online (Sandbox Code Playgroud)