作为自己学习普通口语的一项任务,我正在尝试重新创建lodash。
在重新创建的过程中_.chunk,我编写了以下代码来测试可选参数
(defun _.chunk (array &optional size)
(if (size)
(write ("there") )
(write ("not") )
)
)
Run Code Online (Sandbox Code Playgroud)
设置(setf x #('a 'b 'c 'd))然后运行(_.chunk x),出现错误:
; caught ERROR:
; illegal function call
; (SB-INT:NAMED-LAMBDA _.CHUNK
; (ARRAY &OPTIONAL SIZE)
; (BLOCK _.CHUNK
; (IF (SIZE)
; (WRITE ("there"))
; (WRITE ("not")))))
Run Code Online (Sandbox Code Playgroud)
测试可选功能参数的正确方法是什么?
如果将参数作为参数传递给函数调用,则可以在关键字或可选参数的默认值之后指定的可选变量的名称size-p为true。
因此您可以执行以下操作:
(defun _.chuck (array &optional (size 0 size-p))
(if size-p
(rest of your form...)))
Run Code Online (Sandbox Code Playgroud)