初始化方法是Ruby中的内置方法吗?
为什么我们在创建一个新对象时必须传递参数,为什么它直接进入初始化方法?而且,我们可以创建一个没有初始化方法的类吗?
最佳答案
你可以考虑Class#new
方法和每个类的#initialize
方法之间的关系,或多或少是这样实现的:
class Class
def new
instance = allocate()
instance.initialize
return instance
end
end
class Foo
def initialize
# Do nothing
end
end
您可以在不显式定义#initialize
方法的情况下创建一个类,因为#initialize
方法被默认定义为什么都不做,它的返回值总是被忽略(无论您返回什么值)。
您传递给 Class#new
的参数总是以相同的顺序和格式直接传递给 #initialize
。例如:
class Class
def new (arg1, arg2, &block_arg)
instance = allocate()
instance.initialize(arg1, arg2, &block_arg)
return instance
end
end
class MyClass
def initialize (arg1, arg2, &block_arg)
# Do something with args
end
end
关于ruby - initialize 方法是 Ruby 中的内置方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22738903/