可変長引数をとる関数の定義法
2個以上の引数を要求する関数
(lambda (a b . c) 定義)
使ってみる
gosh> (define func (lambda (a b . c) (print "a=" a " b=" b " c=" c))) func gosh> (func 1 2) a=1 b=2 c=() gosh> (func 1 2 3) a=1 b=2 c=(3) gosh> (func 1 2 3 4) a=1 b=2 c=(3 4) gosh> (func 1) *** ERROR: wrong number of arguments for #<closure func> (required 2, got 1) Stack Trace: _______________________________________
1個以上の引数を要求する関数
(lambda (a . b) 定義)
使ってみる
gosh> (define func (lambda (a . b) (print "a=" a " b=" b))) func gosh> (func 1) a=1 b=() gosh> (func 1 2) a=1 b=(2) gosh> (func 1 2 3) a=1 b=(2 3) gosh> (func) *** ERROR: wrong number of arguments for #<closure func> (required 1, got 0) Stack Trace: _______________________________________
0個以上の引数を要求する関数
(lambda a 定義)
使ってみる
gosh> (define func (lambda a (print "a=" a))) func gosh> (func) a=() gosh> (func 1) a=(1) gosh> (func 1 2) a=(1 2) gosh> (func 1 2 3) a=(1 2 3)