RUBYの変数は、私が理解しているかどうかを見てください.
module DM
def self.included(c)
puts c.class
c.extend MM
end
def set(a)
@a=a
end
module MM
def set(a)
@abc=a
end
def get
@abc
end
end
end
class TT
Abc=123
include DM
def self.setUrl(a)
@baseUrl=a
end
def self.getUrl
@baseUrl
end
def getUrl
@baseUrl
end
def setUrl(a)
@baseUrl=a
end
end
TT extendがMMになった後、MMの中のselfの先頭の方法の中の@の先頭の変数ではありませんて、TTのこの種類の実例の変数になって、TTのコードの中でselfを加えたことに相当します.{MMのすべての方法}.
TTはDMも同時にincludeしているので、DMのメソッドの@先頭の変数はTTのクラスインスタンス変数ではなく、TTのインスタンスのインスタンス変数であることは理解しやすい.
続行:
クラスのインスタンスメソッドで定義された、または参照によって動的に定義された@先頭の変数は、インスタンス変数です.しかし、クラスのself.先頭のクラスメソッドで定義された@先頭の変数はクラスインスタンス変数です!名前は同じでも、役割ドメインが違うので全然違います.
私は自分で気絶して、どこがrubyのはっきりした継承関係の1つの図があることを知らないで、その上とてもTTのsingletonとTTの実例のsingletonを開けて見て、中にいったい何があるかを見たいです!!開けてみる方法を教えてください.開ける方法ではありません.