Ví dụ,Sự khác biệt giữa bao gồm, yêu cầu và mở trong OCaml là gì?
bao gồm: include Ppx_core
mở: open Core.Std
yêu cầu: #require "compiler-libs.common"
và sử dụng: #use "topfind"
Ví dụ,Sự khác biệt giữa bao gồm, yêu cầu và mở trong OCaml là gì?
bao gồm: include Ppx_core
mở: open Core.Std
yêu cầu: #require "compiler-libs.common"
và sử dụng: #use "topfind"
include
re-exports các thành phần của mô-đun trong hiện tại str cấu trúc: mô-đun bạn đang ở sẽ chứa tất cả các định nghĩa có trong Ppx_core
.open
làm cho các thành phần của mô-đun directly accessible trong môi trường nhập văn bản. Thay vì nhập Core.Std.element
, bạn chỉ có thể nhập element
.#require
là lệnh Topfind tìm thư viện và tải thư viện, giúp các mô-đun của bạn có thể truy cập được với bạn.#use
hoạt động như thể copying a full file trực tiếp vào hoạt động của bạn.Lưu ý rằng #
-keywords không phải là một phần của ngôn ngữ OCaml nhưng là các lệnh phức tạp: chúng sẽ không hoạt động nếu bạn cố gắng biên dịch tệp của mình.
Một tuyên bố include Module.Name
trong định nghĩa mô-đun sẽ bao gồm tất cả các định nghĩa từ mô-đun có tên Module.Name
. Các định nghĩa sẽ được bao gồm gần như chúng được sao chép. Nếu include Module.Name
xảy ra bên trong định nghĩa kiểu mô-đun (còn gọi là định nghĩa chữ ký), thì Module.Name
phải là loại mô-đun hợp lệ (được biết đến với trình biên dịch). Nó sẽ bao gồm định nghĩa của một loại mô-đun như nó (không bao gồm bất kỳ ràng buộc chia sẻ kiểu nào).
Các open Module.Name
tuyên bố xảy ra ở cả hai thực hiện mô-đun và module chữ ký, sẽ cho phép bạn tham khảo các định nghĩa (giá trị, chủng loại, các môđun con) của một Module.Name
mà không sử dụng đầy đủ tên, ví dụ, sử dụng tên ngắn mà không tiền tố Module.Name
.
Tuyên bố #require
không phải là tuyên bố và không phải là một phần của ngữ pháp OCaml. Đó là chỉ thị đặc biệt của OCaml toplevel - vòng lặp tương tác. Giống như ipython có chỉ thị riêng của nó. Chỉ thị require
sẽ tải gói được chỉ định và tất cả các gói phụ thuộc của nó. Hơn nữa, chỉ thị này không phải là một phần của phân phối chuẩn OCaml toplevel, nhưng được thêm vào bởi tập lệnh topfind
là một phần của bộ công cụ ocamlfind. Chỉ thị #use
được sử dụng để tải và đánh giá tập lệnh. Ví dụ: #use "topfind"
sẽ tải và đánh giá tập lệnh topfind
từ thư mục thư viện chuẩn OCaml. Tập lệnh này sẽ đăng ký chỉ thị require
. Ngoài ra còn có các chỉ thị #load
và #load_rec
, hoạt động ở cấp độ chi tiết hơn, thay vì các gói - các chỉ thị này có ý định tải thư viện.