设置Racket中的默认参数值

设置Racket中的默认参数值,racket,default-value,Racket,Default Value,是否可以为Racket中的某些参数设置默认值 就像Python中一样: def f(arg=0) ... 对,;请看: 例如: (define (f [arg 0]) (* arg 2)) Racket还支持带有关键字参数的函数。这个链接应该会导致相关文档的出现。祝你好运 顺便说一句,您认为在递归函数中使用可选参数来传递状态是一个好主意吗?有时,但它常常适得其反。例如,如果可选参数是某个累加器,那么如果我忘记在递归调用中的某个地方传递累加器,那么,oops.)在递归函数中使用可选

是否可以为Racket中的某些参数设置默认值

就像Python中一样:

def f(arg=0)
    ...
对,;请看:

例如:

(define (f [arg 0])
  (* arg 2))

Racket还支持带有关键字参数的函数。这个链接应该会导致相关文档的出现。祝你好运

顺便说一句,您认为在递归函数中使用可选参数来传递状态是一个好主意吗?有时,但它常常适得其反。例如,如果可选参数是某个累加器,那么如果我忘记在递归调用中的某个地方传递累加器,那么,oops.)在递归函数中使用可选参数来存储状态,我认为这有点不好,因为抽象是有漏洞的。我更喜欢这样的内部定义模式:(define(fooabc)(define(fooabc状态)#| |…|#)(fooabc’init状态))这正是我所想的。但是,该死,(define(fooabc[state'()])更容易输入:)使用名称let。(define(tree-sum t)(let-loop([t])(if(tree-node?t)(apply+(map-loop(tree-childrent)))(tree-val t)))然后可以向循环函数添加所需的任何状态参数,而不会将它们泄漏到tree-sum函数的接口中@霍尔斯特