3

興味深い Ruby の観察結果の説明を探しています。次のように Comparable モジュールに混在させることを検討してください。

class Class0
end
class Class1
  include Comparable
end
class Class2
  extend Comparable
end

Class2 と Class0 にあるメソッドを探すと、

Class2.methods.each { |x| p x if not Class0.methods.include? x }

: between? だけです。

しかし、これを行うと、Class1 と Class0 のインスタンスの違いを探すために、

a = Class0.new
b = Class1.new
b.methods.each { |x| p x if not a.methods.include? x }

我々が得る

[:>, :>=, :<, :<=, :between?]

結果が異なる理由を理解したいと思います。「extend」が「include」がインスタンスにプッシュするのと同じメソッドをクラスにプッシュすることを期待していたでしょう。「:>」のようなものは、「:between」と同じ意味でメソッドではありませんか? ??

4

1 に答える 1