在Ruby中,将代码放在initialize()
方法中而不是直接放在类体中有什么区别?两者似乎都是在打电话时执行的MyClass.new
.
显然,initialize()
可以接受参数,但这是唯一的区别吗?
class MyClass
puts 'Hello'
def initialize(params)
puts 'World'
end
end
Run Code Online (Sandbox Code Playgroud)
dem*_*mas 61
尝试创建两个MyClass实例
a = MyClass.new
b = MyClass.new
Run Code Online (Sandbox Code Playgroud)
看到差异:
你好
世界
世界
类主体中的代码只执行一次 - 当ruby加载文件时.每次创建类的新实例时都会执行initialize().
好吧,initialize
被调用new
,而类体在类定义/加载上得到评估.
另外,尝试在类主体或中设置实例变量initialize
.您会注意到后者将属于创建的对象,而第一个属于类实例(因此名称类实例变量).
归档时间: |
|
查看次数: |
22269 次 |
最近记录: |