在阅读不同的 Ruby 书籍时,我注意到可以在其他 Ruby 类或模块中定义 Ruby 类。这是类中的类的示例:
class Outerclass
def foobar
puts "FOOBAR"
end
class Innerclass
def barfoo
puts "BARFOO"
end
end
end
这是我在 IRB 中运行的一些代码,试图从概念上理解这一点:
oc = Outerclass.new # => #<Outerclass:0x00000100a46478>
Outerclass.instance_methods(false) # => [:foobar]
ic = Outerclass::Innerclass.new # => #<Outerclass::Innerclass:0x00000100a0b120>
ic = Outerclass::Innerclass.instance_methods(false) # => [:barfoo]
以下是我的问题:
当 ruby 解释器第一次遇到我上面的 Class 定义代码时,它是否会通过我编写的方法并将其存储在某个地方?我知道实例方法“foobar”实际上并没有运行,因为在 Outerclass 定义中没有对其进行调用。
捎带第一个问题,当 Ruby 遇到类 Innerclass 时会怎样?这里会发生什么?
一般来说,您希望在类中拥有类的一些原因是什么?这样做有什么好处吗?
Outerclass 的实例是否知道有关 Innerclass 的任何信息?
Innerclass 的实例是否知道有关 Outerclass 的任何信息?
感谢您提供的任何帮助!