- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以我可以这样做:
(defparameter *some-function* ... ; 稍后返回 lambda
或者这个:
(defun some-function ...
无论是哪种,我都可以使用 funcall
:
(funcall 'some-function ...
或者(funcall *some-function* ...
使用 defun
版本我也可以这样做:
(一些函数...
我不能用 defparameter
函数做到这一点。
defparameter
提供了更简单的技术,用于稍后将 some-function
重新分配给不同的函数(或其他任何东西,包括非函数数据)。
但除了这两点之外,使用其中一个的其他考虑因素是什么?
最佳答案
这个问题的回答很奇怪,因为我们有点将苹果与橙子进行比较。
对于正在查看此内容的 lisp 新手,defparameter 用于定义动态变量,而 defun 用于定义函数。
如果您担心在不使用 defun 的情况下能够以编程方式重新分配函数,请查看以下内容:
CL-USER> (defun jam () (print 'some-jam))
JAM
CL-USER> (jam)
SOME-JAM
CL-USER> (setf (symbol-function 'jam) (lambda () (print 'some-ham)))
#<FUNCTION (LAMBDA ()) {1004C033DB}>
CL-USER> (jam)
SOME-HAM
所以 defparameter 在重新分配函数时没有优势。另外,如果您想重新定义函数,可以查看 the compile command .
关于lisp - defparameter vs defun 用于传递函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19709228/
我是 Lisp 的初学者。我有两个 functions,一个 defparameter 和一个 defstruct。每次将一本书传递给 inputBook 时,我都希望书名(字符串)成为 defpar
我想这样做 (defparameter name (myfunct args)) 在 myfunct 中,我需要重新为变量分配我在 defparameter 中使用的“名称”!是否可以?我如何从 my
我想使用 defmethod 或 defun 使用其中一个参数创建名称来动态启动哈希表。例如: (defun foo (arg) (let ((NAME (read-from-string (fo
我目前正在阅读 Land of LISP 这本书,我刚刚读完第一章。里面写了一个让电脑猜1到100之间数字的小程序,代码如下: (defparameter *small* 1) (defparamet
所以我可以这样做: (defparameter *some-function* ... ; 稍后返回 lambda 或者这个: (defun some-function ... 无论是哪种,我都可以使
考虑这两个: (defparameter *lfn* (let ((count 0)) #'(lambda () (incf count)))) (defun testclosur
我找到了一个 Similar question . 但是我不太明白那个解释。 所以我尝试使用以下示例运行 clisp: [1]> (defvar a 5) A [2]> (+ a 1)
我找到了一个 Similar question . 但是我不太明白那个解释。 所以我尝试使用以下示例运行 clisp: [1]> (defvar a 5) A [2]> (+ a 1)
我是一名优秀的程序员,十分优秀!