Sự khác nhau giữa việc thực hiện use My::Module
và require My::Module
là gì?Trong Perl, sự khác nhau giữa việc sử dụng và yêu cầu tải một mô-đun là gì?
Trả lời
Các use
chức năng:
use ModuleName;
tương đương với đoạn mã sau sử dụng require
chức năng:
BEGIN {
require ModuleName;
ModuleName->import;
}
Khối BEGIN
gây mã này để chạy ngay sau khi phân tích cú pháp nhìn thấy nó. Các require
tải các mô-đun hoặc die
s cố gắng. Và sau đó chức năng import
của mô-đun được gọi. Chức năng import
có thể thực hiện đủ mọi thứ, nhưng thông thường nó sẽ tải các hàm vào không gian tên use
d nó (thường là với mô-đun Exporter
).
Điều quan trọng cần lưu ý đó là nhập khẩu sẽ không được gọi trong trường hợp này:
use ModuleName();
Trong trường hợp đó, nó tương đương với
BEGIN {
require ModuleName;
}
Trang manpage nói rằng * chính xác * tương đương :) – Inshallah
@Inshalla Tôi thích để lại một căn phòng nhỏ lung linh cho bộ nhớ bị lỗi của tôi. –
Từ perldoc -q
"difference between require and use":
use Module
là nhưrequire Module
, ngoại trừ việcuse
4.1: tải các module tại thời gian biên dịch, không chạy theo thời gian.
4.2: nhập biểu tượng và ngữ nghĩa từ gói đó vào gói hiện tại.
use
chạy lúc biên dịch và require
chạy trong thời gian chạy.
Đừng quên việc gọi 'nhập'. –
Đây là câu trả lời mà họ đang tìm kiếm trên các bài kiểm tra Perl và các cuộc phỏng vấn việc làm. Bạn cần phải ghi nhớ điều này! – Hawk
Perl đi kèm với tài liệu hướng dẫn tuyệt vời. Mọi người sẽ được hưởng lợi từ việc đọc toàn bộ tài liệu ít nhất một lần mỗi vài tháng.
Nếu không
require
nhu cầu đó một tập tin thư viện được bao gồm nếu nó chưa được bao gồm. Tệp được bao gồm thông qua cơ chế do-FILE, là về cơ bản chỉ là một loạt các eval với báo trước rằng các biến từ vựng trong tập lệnh gọi sẽ là ẩn với mã được bao gồm. Có ngữ nghĩa tương tự như sau đây chương trình con:
... v.v.Tương tự như vậy,
C:\>
perldoc -f use
Nhập khẩu một số ngữ nghĩa vào các gói hiện từ các mô-đun được đặt tên, thường bởi aliasing nhất định chương trình con hoặc tên biến thành gói của bạn. Nó chính xác tương đương với
BEGIN { require Module; Module->import(LIST); }
ngoại trừ Mô-đun đó phải là một vật thể.
... vv
Ngoài ra còn có các perlfaq entry mặc dù tôi nghĩ rằng đó là ít nhiều thông tin hơn so với ở trên.
Ngoài lệnh 'perldoc' tuyệt vời, bạn có thể truy cập tất cả tài liệu tương tự thông qua http://perldoc.perl.org –
Ah. Thẻ kbd của bạn làm cho khó hơn để biết liên kết là gì (cũng như hiển thị không đẹp lắm). – ysth
- 1. Sự khác nhau giữa "||" là gì và "hoặc" trong Perl?
- 2. Sự khác nhau giữa 'eq' và '= ~' trong Perl là gì?
- 3. Sự khác nhau giữa yêu cầu và yêu cầu là gì?
- 4. Sự khác nhau giữa việc bỏ qua tín hiệu và yêu cầu nó không làm gì trong Perl?
- 5. Sự khác nhau giữa PHP yêu cầu và bao gồm là gì?
- 6. Sự khác nhau giữa việc sử dụng int [] [] và int [,] là gì?
- 7. Sự khác nhau giữa một đối tượng và một lớp trong Perl là gì?
- 8. Sự khác nhau giữa việc truyền và sử dụng "như" trong C# là gì?
- 9. Sự khác nhau giữa // và /// trong Visual Studio là gì?
- 10. Sự khác biệt giữa dữ liệu biểu mẫu và tải trọng yêu cầu là gì?
- 11. Trong Scala, sự khác nhau giữa việc sử dụng `_` và sử dụng một định danh được đặt tên là gì?
- 12. Sự khác biệt trong Clojure giữa việc sử dụng và yêu cầu
- 13. Sự khác nhau giữa việc sử dụng tệp extern và #including header là gì?
- 14. Sự khác nhau giữa việc sử dụng MD5.Create và MD5CryptoServiceProvider là gì?
- 15. Sự khác nhau giữa việc sử dụng mẫu @Transactional và Spring là gì?
- 16. Sự khác biệt giữa xác định và yêu cầu trong RequireJS là gì?
- 17. Sự khác nhau giữa việc sử dụng chuyển hướng Django và HttpResponseRedirect là gì?
- 18. Sự khác nhau giữa việc sử dụng onclick của jQuery và thuộc tính onclick là gì?
- 19. Sự khác nhau giữa Vanilla Perl và Strawberry Perl là gì?
- 20. Sự khác nhau giữa khả năng perl và java regex là gì?
- 21. Sự khác nhau giữa LinFu.DynamicProxy và Castle.DynamicProxy là gì?
- 22. Sự khác nhau giữa AxInterop và Interop là gì?
- 23. Sự khác nhau giữa Request.Url.Query và Request.QueryString là gì?
- 24. Sự khác nhau giữa ODBC và OleDB là gì?
- 25. Sự khác nhau chính giữa signcode.exe và signtool.exe là gì?
- 26. Sự khác nhau giữa UPnP AV và DLNA là gì?
- 27. Sự khác nhau giữa tincan và Scorm là gì?
- 28. Sự khác nhau giữa `base base` và @ISA trong Perl là gì?
- 29. Sự khác nhau giữa 'for' và 'foreach' trong Perl là gì?
- 30. Sự khác nhau giữa init() và window.init() là gì?
@Ether: nhưng đây là m. Tuy nhiên, một trong số họ. – ysth
Điều này có thể dễ dàng để tìm ra trên của riêng bạn, nhưng nó chắc chắn là một câu hỏi Perl rất tốt mà người mới bắt đầu là dễ bị hỏi. Tôi không thấy lý do tại sao nó không được trên stackoverflow. Thiệt hại ở đâu? – innaM