我试图弄清楚如何在方案中设置默认或可选参数。
我试过了(define (func a #!optional b) (+ a b))
但我找不到方法来检查是否b
是一个默认参数,因为只需调用(func 1 2)
会给出错误:
Error: +: number required, but got #("halt") [func, +]
我也尝试过(define (func a [b 0]) (+ a b))
但我收到以下错误:
Error: execute: unbound symbol: "b" [func]
如果有帮助我正在使用琵琶计划 http://www.biwascheme.org/index.html如所用repl.it https://repl.it/languages/scheme
这在 Racket 中效果很好:
(define (func a (b 0)) ; same as [b 0]
(+ a b))
例如:
(func 4)
=> 4
(func 3 2)
=> 5
...但这不是标准语法,它取决于所使用的方案解释器。有处理可变数量参数的语法,它可用于处理具有默认值的可选参数,但它看起来不太漂亮:
(define (func a . b)
(+ a (if (null? b) 0 (car b))))
它是如何工作的?b
is a list的论点。如果为空,则使用零,否则使用第一个元素的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)