2012-07-05 38 views
1

除了像变量数和关键字参数?

(fn [& {:keys [more the-rest]}] ,,,) 

有没有在同一时间, 例如使用的参数和关键字参数变量号的方式

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

回答

2

可以定义你的函数采取任何你喜欢的方式争论,但你会碰到的问题是如何分辨像模糊的情况的区别:

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

为了分辨出来,您需要编写代码来检查运行时的参数(例如,检查第三个参数是否为关键字)。这会变得很难看。

因此,我不建议走这条路。替代方案要考虑:

  • 简化您的功能。如果你有这么多的论点,这可能意味着你已经“过度”了一个单一的功能。
  • 通过所有键/值参数作为一个单一的地图
+0

我想写一个循环宏,直到条件成立执行给定大小的身体,在这种情况下,它会返回传递表单的结果通过键盘参数(否则为零)。但是,我可能会做一些不同的事情。 – Cubic

相关问题