本帖最后由 nonsmall 于 2013-5-13 11:43 编辑
学习VB时看到function函数可以定义可选参数的函数 LISP为什么不能呢 (defun go (a b c) (if a (print (list "a=" a))) (if b (print (list "b=" b))) (if c (print (list "c=" c))) (princ) ) 命令: (go) ; 错误: 参数太少 命令: (go 1) ; 错误: 参数太少 命令: (go 1 2) ; 错误: 参数太少 命令: (go 1 2 3) ("a=" 1) ("b=" 2) ("c=" 3) 命令: (go 1 2 3 4) ; 错误: 参数太多 ================================================= 下面定义一个Call_func函数用于可选参数调用 [Post=10] [/Post] 命令: (Call_func '(go)) 命令: (Call_func '(go 1)) ("a=" 1) 命令: (Call_func '(go 1 2)) ("a=" 1) ("b=" 2) 命令: (Call_func '(go 1 2 3)) ("a=" 1) ("b=" 2) ("c=" 3) 命令: (Call_func '(go 1 2 3 4)) ("a=" 1) ("b=" 2) ("c=" 3) 命令: (Call_func '(go 1 2 3 4 5)) ("a=" 1) ("b=" 2) ("c=" 3) 命令: (Call_func '(go 1 nil 3)) ("a=" 1) ("c=" 3) 命令: (Call_func '(go nil nil 3)) ("c=" 3) 这样Lisp也可以自己定义一个可选参数的函数 (defun 函数 ([参数] [参数] ...)) 以后的Lisp函数调用过程会变得更加灵活! [Post=10][/Post] |