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不能直接支持关键字参数和可选参数。

上一篇下一篇

猜你喜欢

热点阅读