我有一个函数,它返回 seq 中存在值 v 的索引:
(defn indexes-of [v s]
(map first (filter #(= v (last %)) (zipmap (range) s))))
我想做的是扩展它以将任意函数应用于存在测试。我的想法是使用多方法,但我不确定如何检测函数。我想做这个:
(defmulti indexes-of ???)
(defmethod indexes-of ??? [v s] ;; v is a function
(map first (filter v (zipmap (range) s))))
(defmethod indexes-of ??? [v s] ;; v is not a function
(indexes-of #(= v %) s))
多方法是走这里的路吗?如果是这样,我怎样才能完成我想做的事情?