我正在尝试查找集合中以一个字母开头的所有值。过滤器似乎是最快的方法。但是我很难让它与两个参数一起使用。
这是功能
(defn starts [letter word]
(def startVal (clojure.string/starts-with? word letter)
startVal)
很好。它试图在那上面使用过滤器。我需要能够尝试多个字母,所以我不能仅仅将其硬编码到此处的函数中。但是filter总是会抛出错误(当我尝试向其提供多个值时,错误的Arity(3)。
当我开始更改为一个参数函数时(先传递单词,然后硬编码字母),然后尝试
(println (filter starts [this is my example collection of words])
它起作用了,我得到了正确的价值。
如何获取过滤器以使用两个值。通过直接写到过滤器调用中的匿名函数可以做到吗?
如果我要解决所有这些错误,并且也可以以另一种方式编写代码(我也很高兴知道),但是如果有解决方案,我想弄清楚如何以这种方式使用过滤器。
答案 0 :(得分:2)
filter
需要一个参数的函数。如果其中一个参数保持不变,则可以使用匿名的一参数包装函数:
(filter #(starts my-letter %) my-words)
或者,等效地:
(filter (partial starts my-letter) my-words)