我有这个功能:
java.lang.IllegalArgumentException: Mismatched argument count to recur, expected: 1 args, got: 2 (NO_SOURCE_FILE:33)
我收到错误:(defn fact [x]
(loop [n x f 1]
(if (= n 1)
f
(recur (dec n) (* f n)))))
但是来自其他SO问题的这个因子工作正常。为什么呢?
var str = 'Paul m\'a dit : « Bonjour ! »';
var corrected_str = str.replace(/ (!|\:|\?|…|;|»)/g, ' $1', str).replace('« ', '« ');
答案 0 :(得分:2)
recur
上let
recur
。
当你java.lang.IllegalArgumentException: Mismatched argument count to recur, expected: 1 args, got: 2 (NO_SOURCE_FILE:33)
在这里时,你实际上是在函数定义中重复出现,因为函数定义有一个参数loop
。
在第二个例子中,他正在使用recur
,当你想要{{1}}除了函数之外的其他一些参数时,你应该使用它。
答案 1 :(得分:2)
在你的示例中recur
循环到!
,它期待1个参数但得到2,
recur
中的循环到loop
,期待2个参数并获得2个参数