1
想要:如果傳遞函數或閉包,則調用它,否則返回輸入。我試試這個:調用作爲參數傳遞的函數
(defun ifcall (x) (if (typep x 'FUNCTION) (funcall x) (x)))
並獲得「未定義函數:X」。爲什麼?
想要:如果傳遞函數或閉包,則調用它,否則返回輸入。我試試這個:調用作爲參數傳遞的函數
(defun ifcall (x) (if (typep x 'FUNCTION) (funcall x) (x)))
並獲得「未定義函數:X」。爲什麼?
您的if
的其他部分不應包裹在parens中。當你把東西放在parens裏面的時候,它會被視爲一個函數調用。要返回該值,只需執行
(defun ifcall (x) (if (typep x 'FUNCTION) (funcall x) x))