質問のタイトルの恐ろしさは、私が解決しようとしているものです。例:
Ruby では、Enumerable は、何かを実装して次のように文書化できるという意味でのインターフェイスです。
def myfancymethod(please_pass_me_an_Enumerable_here)
しかし一方で、Enumerable は、メソッドの 1 つとして #each を持つインターフェイスの一種の増幅です。クラスがあれば
class Foo
def each
:bar
end
end
Ruby に不慣れな方のために説明すると、Enumerable モジュールをクラスに混在させると、メソッドのみに依存して、など#each
を提供する多数のメソッドが得られます。#map
#select
私のFoo
クラスは列挙可能または列挙可能と互換性があると言えますか? 「Enumerable になるには何が必要ですか?」、「#each が必要です」に対する答えを説明する用語は何ですか?
同様にRubyでも
(Array.new.methods - Object.new.methods).size # 111
配列インターフェイスを偽造するには、111 個のメソッドを実装する必要があるということですか? あり得ませんが、どのメソッドが Array の「本質」であるかを調べる方法を教えてください。それ#[]
はただですか?それを理解する方法は?#[]=
#size