2
從本質上講,我想這是這樣的一個功能:找到一個對象的位置對序列中的Clojure
user=> (pos 'c '(a b c d e f g) =)
2
user=> (pos 'z '(a b c d e f g) =)
nil
我想出了這一點:
(defn pos
"Gets position of first object in a sequence that satisfies match"
[object sequence match]
(loop [aseq sequence position 0]
(cond (match object (first aseq)) position
(empty? aseq) nil
:else (recur (rest aseq) (inc position)))))
所以我的問題是,是否有一些內置的函數可以讓我們做到這一點,或者是否會有更好的,更實用的/ Clojure方法來編寫pos
函數?
你可以使用'keep-indexed' - 看到這個問題: http://stackoverflow.com/questions/8641305/how-do-i-find-the-index-of-an-element-that- match-a-predicate-in-clojure – Gert 2012-01-01 05:49:22
和另一個與相同的問題:http://stackoverflow.com/questions/4830900/how-do-i-find-the-index-of-an-item-in- a-vector – Gert 2012-01-01 05:51:20
@gertalot謝謝!這些鏈接對我也有幫助 – wrongusername 2012-01-01 22:40:15