4.4函数(程序):lambda
2015-11-21 本文已影响42人
jarod_chan
lambda表达是创建了一个函数。
(lambda (arg-id ...)
body ...+)
4.4.1声明剩余参数
(lambda rest-id
body ...+)
lambda表达是能有一个rest-id没有括号。函数能接受任意参数,参数列表和rest-id绑定。
lambda也支持参位置参数和剩余参数。
(lambda (arg-id ...+ . rest-id)
body ...+)
这种函数必须接受位置参数个数的参数,也接受任意数量的额外参数。
4.4.2声明可选参数
参数可以指定默认值。
(lambda gen-formals
body ...+)
gen-formals=(arg ...)
|rest-id
|(arg ...+ . rest-id)
arg=arg-id
|[arg-id default-expr]
一个参数指定默认值以后,其后的所有参数都要指定默认值。
4.4.3申明关键字参数
(lambda gen-formals
body ...+)
gen-formals=(arg ...)
|rest-id
|(arg ...+ . rest-id)
arg=arg-id
|[arg-id default-expr]
|arg-keyword arg-id
|arg-keyword [arg-id default-expr]
使用 make-keyword-procedure可以接收关键字参数和剩余参数。
4.4.4参数数量敏感函数
(case-lambda
[formals body ...+]
...)
formals=(arg-id ...)
|rest-id
|(arg-id ...+ . rest-id)
类似case语句,根据参数决定执行的方法体。case-lambda不能直接支持关键字参数和可选参数。