Sự khủng khiếp của tiêu đề của câu hỏi là những gì tôi đang cố gắng giải quyết. Ví dụ:Làm cách nào để tìm các phương thức "thiết yếu" để cung cấp giao diện của các mixin Ruby?
trong Ruby, Enumerable là một giao diện trong một cảm giác mà tôi có thể thực hiện một cái gì đó và ghi lại nó như:
def myfancymethod(please_pass_me_an_Enumerable_here)
nhưng mặt khác, Enumerable là một loại khuếch đại của giao diện có #each là một trong những phương pháp của nó. Nếu tôi có một lớp
class Foo
def each
:bar
end
end
Đối với những người không quen với Ruby, nếu bạn mô-đun mixin Enumerable trong một lớp học, bạn sẽ có hàng chục phương pháp mà chỉ dựa vào #each
phương pháp để cung cấp những thứ như #map
, #select
vv
Tôi có thể nói lớp học Foo
của tôi là Có thể đếm được hoặc Tương thích với số hoặc những gì? Những cụm từ mô tả một câu trả lời cho "những gì hiện nó đi để trở thành một Enumerable?", "Vâng, bạn cần phải có #each"
Tương tự như vậy, trong Ruby
(Array.new.methods - Object.new.methods).size # 111
Điều đó có nghĩa rằng để giả mạo một mảng giao diện, tôi phải thực hiện 111 phương pháp? Không có cách nào, nhưng làm thế nào để tôi tìm ra phương pháp nào là "bản chất" của Mảng. chỉ là #[]
, #[]=
và #size
? Làm thế nào để làm cho tinh thần của nó?
Câu hỏi của bạn về thuật ngữ? Hoặc về cách tìm các phương pháp "thiết yếu"? –
Tôi nghĩ điều này sẽ dễ dàng hơn nhiều khi trả lời bằng ngôn ngữ có giao diện. – Russell
@SergioTulentsev sau này sẽ là tuyệt vời. Tôi vẫn không biết phương thức ActiveRecord hoặc Array "cần thiết" là gì. – ulver