Clojure中简单的新手问题......
如果我在Clojure向量中有奇数个元素,我该如何提取"中间"值?我已经看了一段时间,但无法解决这个问题!
一些例子:
(middle-value [0]) 应该回来 [0](middle-value [0 1 2]) 应该回来 [1](middle-value [0 1 :abc 3 4]) 应该回来 [:abc](middle-value [0 1 2 "test" 4 5 6]) 应该回来 ["test"]如何计算中间索引并通过它进行访问?
(defn middle-value [vect]
(when-not (empty? vect)
(vect (quot (count vect) 2))))
Run Code Online (Sandbox Code Playgroud)
一个有点低效但有趣的实现(使用序列抽象而不是具体的向量):
(defn middle [[fst & rst]]
(if-not rst fst
(recur (butlast rst))))
Run Code Online (Sandbox Code Playgroud)
nil在偶数元素的情况下返回.
不那么有趣但效率更高:
(nth v (quot (count v) 2))
Run Code Online (Sandbox Code Playgroud)
v矢量在哪里.
| 归档时间: |
|
| 查看次数: |
859 次 |
| 最近记录: |