Clojure 使用函数中的分部作为映射上的值
首先;很抱歉,如果我使用的术语不正确,我对clojure仍然很陌生,范式转换需要一些时间 我正在尝试使用一个函数,该函数从大于12的集合中获取第一项(是一个“青少年”数字)。当我直接将它应用于一个集合时,我可以编写这个函数,但我不确定如何在映射中编写函数。谁能给我指出正确的方向吗 我尝试了几件事,通常是沿着Clojure 使用函数中的分部作为映射上的值,clojure,Clojure,首先;很抱歉,如果我使用的术语不正确,我对clojure仍然很陌生,范式转换需要一些时间 我正在尝试使用一个函数,该函数从大于12的集合中获取第一项(是一个“青少年”数字)。当我直接将它应用于一个集合时,我可以编写这个函数,但我不确定如何在映射中编写函数。谁能给我指出正确的方向吗 我尝试了几件事,通常是沿着(partial(first(filter(partial((:最后一些函数)测试集) 29 >((:第十个函数)测试集) 15 当然,您也可以明确定义函数并在映射中使用它: > (d
(partial(first(filter(partial<12)))
的思路进行的,但到目前为止没有任何运气,而且对filter/partial的定义的研究还没有取得成果
TL/DR
我想要有一个函数,作为映射中的一个值,它接受列表中大于12的第一项
(def测试集[1,8,15,22,29])
(def)一些函数{
:首先
:最后
:第十句“我不知道该在这里放什么”
})
(第一个(过滤器(部分<12)测试集))
一种方法是在定义映射()时使用匿名函数
>(定义一些函数{
:首先
:最后
:teenth#(第一个(过滤器(部分<12%))})
>((:第一部分功能)测试集)
1.
>((:最后一些函数)测试集)
29
>((:第十个函数)测试集)
15
当然,您也可以明确定义函数并在映射中使用它:
> (defn teenth [coll] (first (filter (partial < 12) coll)))
> (def some-functions {
:first first
:last last
:teenth teenth})
>(defn teenth[coll](第一个(过滤器(部分<12)coll)))
>(def)一些函数{
:首先
:最后
:teenth teenth})
(顺便说一句,小心使用单词
set
。在clojure中,集合是唯一值的无序集合。)一种方法是在定义映射时使用匿名函数()
>(定义一些函数{
:首先
:最后
:teenth#(第一个(过滤器(部分<12%))})
>((:第一部分功能)测试集)
1.
>((:最后一些函数)测试集)
29
>((:第十个函数)测试集)
15
当然,您也可以明确定义函数并在映射中使用它:
> (defn teenth [coll] (first (filter (partial < 12) coll)))
> (def some-functions {
:first first
:last last
:teenth teenth})
>(defn teenth[coll](第一个(过滤器(部分<12)coll)))
>(def)一些函数{
:首先
:最后
:teenth teenth})
(顺便说一句,小心单词
集合
。在clojure集合中,集合是唯一值的无序集合。)我发现@jas的答案有一点改进
功能
#(first (filter (partial < 12) %))
及
[1]
[2] 我发现@jas的答案有一点改进 功能
#(first (filter (partial < 12) %))
及
[1]
[2] 非常感谢您的帮助性回答;特别是到教程的链接,以及关于使用
set
的说明;我渴望掌握术语,所以这种指针非常有用!非常感谢你的回答;特别是到教程的链接,以及关于使用set
的说明;我渴望掌握术语,所以这种指针非常有用!这是一个非常有趣的答案,非常感谢您的额外输入!这是一个非常有趣的答案,非常感谢您的额外输入!
(fn [coll] (some #(if (< 12 %) %) coll))
(defn teenth [coll] (some #(if (< 12 %) %) coll))
(fn [coll] (some (fn [e] (if (< 12 e) e)) coll))