#' 与 ' 有区别么?

想问能用 #’ 的地方, 是不是也都能用 '? 比如:

(defun filter-command-error-function (data context caller)
  (when (not (memq (car data) '(buffer-read-only
                                beginning-of-line
                                end-of-line
                                beginning-of-buffer
                                end-of-buffer)))
    (command-error-default-function data context caller)))

(setq command-error-function #'filter-command-error-function)

最后一行去掉 # , 写成 (setq command-error-function 'filter-command-error-function)好像也是可以的.

直接举个例子,lexical binding 下,用 #'(lambda'(lambda 有巨大区别,后者可能编译后不能正常工作。虽然正常应该直接 (lambda

忘记了是在哪儿看到的: #' 的真身是 (function symbol),而 ' 的真身是 (quote symbol)

主要是lambda表达式需要 #’

否则lamda表达式里面的无法引用lambda表达式外的局部变量。

2 个赞