Tôi có thể đọc tài liệu, vì vậy tôi không yêu cầu cắt và dán tài liệu đó.Mục đích của hàm Emacs (eval-and-compile ...) là gì?
Tôi đang cố gắng hiểu động lực cho chức năng này.
Khi nào tôi muốn sử dụng?
Tôi có thể đọc tài liệu, vì vậy tôi không yêu cầu cắt và dán tài liệu đó.Mục đích của hàm Emacs (eval-and-compile ...) là gì?
Tôi đang cố gắng hiểu động lực cho chức năng này.
Khi nào tôi muốn sử dụng?
documentation in the Emacs lisp manual có một số trường hợp mẫu có vẻ như trả lời câu hỏi của bạn (trái ngược với chuỗi tài liệu).
Từ khi xem mã nguồn Emacs, eval-and-compile
được sử dụng để làm yên lặng trình biên dịch, để tạo macro/chức năng trong quá trình biên dịch (và đánh giá) hoặc tạo biến thể/phiên bản cụ thể của macro/chức năng trong quá trình biên dịch.
Một cách sử dụng tôi thấy hữu ích khi xem là trong ezimage.el
. Trong đó, một câu lệnh if
được đặt bên trong các số eval-and-compile
thành các macro xác định có điều kiện tùy thuộc vào việc gói được biên dịch/đánh giá trong Emacs hoặc XEmacs hay không, và bổ sung liệu có một tính năng cụ thể không. Bằng cách gói rằng có điều kiện bên trong eval-and-compile
, bạn cho phép sử dụng macro thích hợp trong quá trình biên dịch. Tình huống tương tự có thể được tìm thấy trong mwheel.el
.
Tương tự, nếu bạn muốn xác định hàm qua fset
và có sẵn trong quá trình biên dịch, bạn cần có cuộc gọi đến fset
được bao bọc với eval-and-compile
vì nếu không biểu tượng -> liên kết hàm không khả dụng cho đến khi tệp được đánh giá (vì việc biên soạn cuộc gọi đến fset
chỉ cần tối ưu hóa bài tập, nó không thực sự là làm bài tập). Tại sao bạn muốn phân công này trong quá trình biên dịch? Để làm yên lặng trình biên dịch. Lưu ý: đây chỉ là từ ngữ của tôi về những gì có trong tài liệu elisp.
Tôi đã nhận thấy rất nhiều công dụng trong mã Emacs chỉ gói các cuộc gọi đến require
, có vẻ dư thừa khi bạn đọc tài liệu. Tôi đang thua lỗ như thế nào để giải thích chúng.