【发布时间】:2016-02-21 19:48:47
【问题描述】:
是否有一种惯用/内置的方式来翻转传递给 Clojure 中函数的参数顺序?
就像我在这里定义一个辅助函数一样:
(defn flip [f & xs]
(apply f (reverse xs)))
(vector 1 2) ; [1 2]
(flip vector 1 2) ; [2 1]
【问题讨论】:
-
是的,有!你在你的问题中写了它。不过,我不太确定这在哪里有用。你能举个实际的例子吗?
-
我正在使用一个二维向量,比如一个带有 x 轴和 y 轴的网格。然后我有一个在那个网格上运行的函数:这个函数在网格中的连续字段序列上运行,有时是垂直的,有时是水平的。为了让函数不用担心轴,我将(部分向量)或(部分翻转向量)传递给它。通过该子功能,该功能可以以更抽象的方式对网格进行操作。
-
如果我在需要时交换网格中的 x 和 y 轴,也会发生同样的效果。嗯,我不确定这是否解释得很好......
-
你能在你的问题中发布一个代码示例吗?
-
好吧,我试着只提取相关部分。这里有一个要点:gist.github.com/antonharald/68bb0cbbebf964264270希望澄清翻转的需要。但也许还有其他方法..
标签: clojure functional-programming