Các class<<self
có vẻ là một cá trích đỏ, vì sự khác biệt duy nhất ở đây là một lớp so với một mô-đun. Có lẽ bạn đang yêu cầu "Tôi muốn tạo một đối tượng mà tôi không có ý định khởi tạo, nhưng chỉ tồn tại dưới dạng không gian tên cho một số phương thức (và có thể là một singleton với trạng thái toàn cầu, riêng của nó)."
Nếu trường hợp này xảy ra, cả hai sẽ hoạt động tốt như nhau. Nếu có bất kỳ cơ hội mà bạn có thể muốn tạo một dẫn xuất (một đối tượng kế thừa những phương pháp tương tự) thì bạn nên sử dụng một lớp vì nó hơi là dễ dàng hơn để viết:
class Variation < Helper
thay vì
module Helper
module OwnMethods
# Put methods here instead of class << self
end
extend OwnMethods
end
module Variation
extend Helper::OwnMethods
Tuy nhiên, đối với chỉ là không gian tên tôi thường sẽ sử dụng một mô-đun trên một lớp, như một lớp học ngụ ý rằng sự diễn giải sẽ xảy ra.
Một trong số họ có thêm một chữ cái so với chữ cái kia? :) Bạn có ý nghĩa gì bởi "có sự khác biệt"? Một là một lớp, một là một mô-đun, và trong cả hai bạn đang nhập eigenclass. – Phrogz
Tôi nghĩ rằng tôi muốn hỏi, khi nào bạn sẽ sử dụng cái này qua cái kia. Tôi đã chỉnh sửa câu hỏi để phản ánh điều đó. –