Bao gồm
Khi bạn đưa include
một mô-đun vào lớp của mình, như thể bạn đã lấy mã được xác định trong mô-đun và chèn nó vào trong lớp, nơi bạn 'bao gồm' nó. Nó cho phép hành vi 'mixin'. Ví dụ, nó được sử dụng để DRY mã của bạn để tránh trùng lặp, nếu có nhiều lớp sẽ cần cùng một mã trong mô-đun.
module Log
def class_type
"This class is of type: #{self.class}"
end
end
class TestClass
include Log
# ...
end
tc = TestClass.new.class_type # -> success
tc = TestClass.class_type # -> error
Yêu cầu
Phương thức yêu cầu cho phép bạn tải một thư viện và ngăn không cho nó được tải nhiều lần. Phương thức yêu cầu sẽ trả về 'false' nếu bạn cố tải cùng một thư viện sau lần đầu tiên. Phương thức yêu cầu chỉ cần được sử dụng nếu thư viện bạn đang tải được xác định trong một tệp riêng, thường là trường hợp.
Vì vậy, nó theo dõi xem thư viện đó đã được tải hay chưa. Bạn cũng không cần chỉ định phần mở rộng .rb của tên thư viện. Đây là một ví dụ về cách sử dụng yêu cầu. Đặt phương thức yêu cầu ở đầu tập tin .rb của bạn:
Tải
Phương thức tải gần giống như phương thức yêu cầu ngoại trừ việc nó không theo dõi xem thư viện đó đã được tải hay chưa. Vì vậy, có thể tải thư viện nhiều lần và cả khi sử dụng phương thức tải, bạn phải chỉ định phần mở rộng của .Rbb của tên thư viện.
Mở rộng
Khi sử dụng phương thức mở rộng thay vì bao gồm, bạn đang thêm các phương thức của mô đun làm phương thức lớp thay vì phương thức cá thể.
module Log
def class_type
"This class is of type: #{self.class}"
end
end
class TestClass
extend Log
# ...
end
tc = TestClass.class_type
require
vàinclude
, và cũng có liên quan ,Module#append_features
.