で誰が の役割を果たしているのかを確認するためにself
、nested methods
次のコードを試しました。
def test
p "#{self}"
def show
p "#{self}"
end
end
# => nil
効果として、以下の 2 つのオブジェクトを取得しました。
Object.new.test
"#<Object:0x00000002212d78>"
# => nil
Object.new.test.show
"#<Object:0x00000002205330>" #<~~~ this is self understood
"" #<~~~ how this one came?
# => ""
しかし、エンコードされた数値からは、それらのオブジェクトがどのクラスに属しているかを理解できませんでした。そして、以下のコードを試して、それぞれclass
の名前を取得しました。
Object.new.test.class
"#<Object:0x000000021ff3b8>"
# => NilClass
Object.new.test.show.class
"#<Object:0x000000020660b0>"
""
# => String
class
上記のコードがこれらの名前をどのように生成したかの概念を理解するのを手伝ってくれる人はいますか?
編集
ここで、より具体的な方法で質問をしようとしました:
def test
p "First level # => #{self}"
def show
p "Second level # => #{self}"
end
end
# => nil
Object.new.test.show
"First level # => #<Object:0x000000014a77b0>"
"Second level # => "
# => "Second level # => "
Object.new.test.show.class
"First level # => #<Object:0x0000000130ef70>"
"Second level # => "
# => String
p "Second level # => #{self}"
声明self
に""
価値があるのはなぜですか?