clojure - 如何使用具有多个参数的函数的映射

标签 clojure

我有以下方法:

(defn area [x y] (* x y))

如何遍历关于参数编号的列表。就像是
(map area [2 5 6 6])

所以它会进行类似 (area 2 5) 的计算和 (area 6 6) ,也许 vector 不是正确使用的类型。

最佳答案

您可以使用 partition正如一些人在这里建议的那样,但您可能需要考虑以不同的方式排列数据。例如,您可以使用向量的向量:

[[2 5] [6 6]]

然后您可以更改您的area功能:
(defn area [[x y]] (* x y))

现在你可以用你的一对调用它:(area [6 6])并在您的向量上进行映射很容易:
(map area [[2 5] [6 6]])

如果由于某种原因您需要 area要采用两个参数而不是向量,您可以执行以下操作:
(map #(apply area %) [[2 5] [6 6]])

对我来说,这仍然比使用 partition 更简单.

关于clojure - 如何使用具有多个参数的函数的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15252184/

相关文章:

用于库/命名空间的 Clojure 文档字符串

clojure - 将转导输出与输入合并到 HashMap 中

intellij-idea - 如何使用 Clojure REPL (La Clojure) 加载具有依赖项的单个 clojure 文件?

linux - Clojure + Linux + Ext4 + 将字符串编码为文件名

clojure - 如何在 clojure 中创建可执行文件?

clojure - 使用 Clojure zipper 查找树中节点的位置

clojure - 有没有一种快速方法可以检查 Clojure 函数中的 nil args?

unit-testing - 在单元测试中捕获异常

clojure - Clojure 中的头部保留

unit-testing - 如何测量每个命名空间运行 clojure 测试所花费的时间?