变量AND关键字参数?

时间:2012-07-05 08:05:43

标签: clojure

除了

之类的东西
(fn [& {:keys [more the-rest]}] ,,,)

有没有办法同时使用可变数量的参数和关键字参数, e.g。

(my-function arg1 arg2 some-other-args :opt1 opt1 :opt2 opt2)

1 个答案:

答案 0 :(得分:2)

你可以定义你的函数以你喜欢的方式获取参数,但是你将遇到的问题是如何区分模糊情况之间的区别:

(my-function arg1 arg2 arg3 arg4)
(my-function arg1 arg2 key1 val1)

为了区分,您需要编写代码以在运行时检查参数(例如,检查第三个参数是否为关键字)。这会很快变得丑陋。

因此,我不建议沿着这条路走下去。备选方案:

  • 简化您的功能。如果你有这么多的论点,那可能意味着你已经在一个单一的函数中“过度”了。
  • 将所有键/值参数作为单个映射传递