我想在函数中创建一个数组,并将其作为参数传递给另一个函数,该函数从该函数调用。我怎样才能做到这一点?这是伪代码:
define FuncA (Array Q){
<whatever>
}
define FuncB (n){
make-array myArray = {0,0,....0}; <initialise an array of n elements with zeroes>
FuncA(myArray); <call FuncA from FuncB with myArray as an argument>
}
答案 0 :(得分:9)
Common Lisp是动态类型的,因此数组参数的声明方式与任何其他参数一样,没有类型:
(defun funcA (Q)
Q) ; just return the parameter
(defun funcB (n)
(let ((arr (make-array n :initial-element 0)))
(funcA arr)))
或者,如果您不需要创建绑定,只需
(defun funcB (n)
(funcA (make-array n :initial-element 0)))
测试
? (funcB 10)
#(0 0 0 0 0 0 0 0 0 0)
如果要检查参数是否为预期类型,可以使用typep
,type-of
,typecase
或check-type
,例如:
(defun funcA (Q)
(check-type Q array)
Q)
然后
? (funcA 10)
> Error: The value 10 is not of the expected type ARRAY.
> While executing: FUNCA, in process Listener(4).