我刚刚开始学习Clojure,并且我已经看到了几个使用'take'函数来引用范围.
特别
(take 5 (range))
这似乎是相同的
(range 5)
两者都生成
(0 1 2 3 4)
是否有风格或性能使用其中一个的原因?
一般来说,使用(range 5)
可能性能更高,我认为它更具惯用性.但是,请记住,这需要人们知道创建时范围的范围.
如果最初的尺寸未知,或者在施工后可能会进行其他一些改造,那么take
选择是非常好的.例如:
(->> (range) (filter even?) (drop 1) (take 5))