Sự khác biệt giữa 'và #' trước biểu tượng là gì?


22

Tôi là một chút mới với Emacs. Khi xem xét một số cấu hình, tôi thấy có hai loại lệnh trong "add-hook".

(add-hook 'LaTeX-mode-hook #'LaTeX-math-mode)

(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)

Điều này đã làm tôi bối rối trong một thời gian dài và tôi không biết cách tìm kiếm "# '" trong google ...

Cảm ơn.


2
Xin lỗi, xấu của tôi. Tìm thấy câu trả lời: stackoverflow.com/questions/2701698/ trên
X.Arthur


2
Các bản sao trên các trang web khác là tốt. Có một cái ở đây, mặc dù, nó gần như là một bản sao. emacs.stackexchange.com/q/3595/50
Malabarba

Câu trả lời:


21

Trong Emacs Lisp, nếu foolà một biểu tượng, thì 'foo#'foohoàn toàn tương đương. Hình thức thứ hai (với #') được ưa thích khi foolà một hàm, vì nó ghi lại thực tế rằng nó được dự định sẽ bị loại bỏ.

Do đó, hai hình thức của bạn là hoàn toàn tương đương, và hình thức với #'được ưu tiên.

Chỉnh sửa : như được chỉ ra bởi Malabarba, điều này không hoàn toàn đúng: #'trên các biểu tượng sẽ khiến trình biên dịch byte phát ra cảnh báo nếu chức năng không được xác định.

(Lưu ý rằng đây không phải là trường hợp của biểu mẫu lambda, vì điều này đơn giản 'ngăn trình biên dịch byte biên dịch biểu mẫu lambda, như được ghi lại ở nơi khác . Lưu ý thêm rằng điều này cũng không nhất thiết là trong các phương ngữ Lisp khác, ví dụ như trong Lisp thường #'foothực hiện ràng buộc sớm.)


Đúng về cảnh báo. Đối với lambdas, #'hướng dẫn trình biên dịch biên dịch lambda, trái ngược với trích dẫn đơn giản, điều này không có. Tôi đã cải cách một cách hy vọng rõ ràng hơn.
JCH
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.