Ruby:初始化()vs类体?
在Ruby中,将代码放入initialize()
方法而不是直接放在类体中有什么区别? 在调用MyClass.new
时,两者似乎都被执行。
显然, initialize()
可以接受参数,但这是唯一的区别吗?
class MyClass puts 'Hello' def initialize(params) puts 'World' end end
尝试创buildMyClass的两个实例
a = MyClass.new b = MyClass.new
看到不同之处:
你好
世界
世界
类体中的代码只执行一次 – 当ruby加载文件时。 每次创build类的新实例时,initialize()都会执行。
那么, initialize
被new
调用,而类的主体获得评估类定义/加载。
另外,尝试在类体中或initialize
设置一个实例variables。 你会注意到后者将属于创build的对象,而第一个属于类实例(因此名称类实例variables)。
如果你在类体中写一个代码,它会在ruby加载该类时执行,加载只能发生一次。 初始化只有在你创build一个类的实例时才会被执行,并且每次你调用新的类的时候它都会被执行。
现在,当你做MyClass.newruby加载类MyClass时,它会查找内存中的类,如果它不是然后加载该类,然后调用其新方法来创build实例