【问题标题】:Mapping a function over a sequence of argument vectors in Clojure在 Clojure 中的一系列参数向量上映射函数
【发布时间】:2011-12-07 23:24:15
【问题描述】:

有没有办法将一个包含 3 个参数的函数 foo 映射到参数向量列表(或列表)上,以便向量解构?

(defn foo [a b c]
 ...)

([a1 b1 c1] [a2 b2 c2])

我可以使用一个简单的函数来执行此操作吗?还是我必须构造一个匿名函数?

【问题讨论】:

    标签: map clojure


    【解决方案1】:

    你想要应用功能。

    (map #(apply foo %) '([1 2 3] [4 5 6]))
    

    编辑:

    由于您提到不使用匿名函数,我会注意到您可以通过一些简单的函数组合轻松制作 foo 函数的“可映射”版本。

    (def mfoo (partial apply foo))
    (map mfoo '([1 2 3] [4 5 6]))
    

    【讨论】:

    • 一般来说,使用向量而不是引用列表,因为后者会阻止评估内部部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多