Sự khác biệt giữa tải tập tin và tải


17

Tôi đã xem qua tài liệu của cả hai chức năng nhưng dường như chúng không tiết lộ nhiều thông tin. Sự khác biệt thực tế giữa chúng là gì ngoài thực tế loadlà một hàm tích hợp trong mã nguồn C trong khi tệp tải là một hàm được biên dịch danh sách tương tác.

Chức năng được đề xuất để sử dụng là gì init.elvì cả hai dường như đang làm cùng một công việc?


2
Phần nào của tài liệu này không rõ ràng về vấn đề này? Xem xét báo cáo vấn đề tài liệu, nếu bạn thực sự nghĩ rằng có một : M-x report-emacs-bug. Như @shosti nói, và như tài liệu chỉ rõ, load-file" không sử dụng load-pathvà không nối các hậu tố ", cho hai sự khác biệt quan trọng.
vẽ

Xem thêm hướng dẫn sử dụng Emacs, thư viện Lisp nút .
Drew

Câu trả lời:


14

Có một số cách để tải tệp Lisp trong Emacs:

  1. load-filelấy một tên tệp bằng chữ (tương đối hoặc tuyệt đối) và tải mã. Thí dụ:(load-file "/usr/local/share/site-lisp/foo.el")
  2. loadgiống như load-file, ngoại trừ việc nó linh hoạt hơn - bạn có thể bỏ tiện ích mở rộng và nó sẽ tự động tải tệp "elc" hoặc "el" nếu thích hợp.
    Nó cũng nhìn vào các load-paththư mục.
    Ví dụ: (load "foo")(nếu "foo.el" nằm trong thư mục hiện tại hoặc trong đường dẫn tải ").
  3. load-librarylà một giao diện tương tác cho load.
  4. requiretương tự như vậy load, ngoại trừ việc nó ngăn không cho tệp được tải nhiều lần (nó cũng yêu cầu một providecâu lệnh tương ứng ở cuối tập tin được đề cập). Thí dụ:(require 'foo)

3
requireVí dụ của bạn là một loadví dụ. ;-)
vẽ

Các load-fileví dụ sử dụng load. :)
itjeyd

2
Xin lỗi để nói 2 và 3 đã sai. :-) load không nhìn vào đường dẫn tải.
Malabarba

@Malabarba Rất tiếc, bạn đã đúng, cảm ơn vì đã sửa. Điều đó khó hiểu hơn tôi nghĩ.
shosti

8

load-fileload-librarycác lệnh để sử dụng tương tác (trong đó sự khác biệt chính là trong nội dung ban đầu của dấu nhắc).

loadhàm cơ bản để sử dụng khi bạn viết Elisp (chẳng hạn như trong .emacs của bạn).

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.