方法的返回值是其最后一条语句的值。这意味着Myclass.new
遵循以下initialize
方法的定义 with super
inside:
class Myclass < String
def initialize(arg)
super(arg.to_s)
"something"
end
end
应该返回"something"
。但它"test"
反而返回:
Myclass.new("test") # => "test"
为什么?
方法的返回值是其最后一条语句的值。这意味着Myclass.new
遵循以下initialize
方法的定义 with super
inside:
class Myclass < String
def initialize(arg)
super(arg.to_s)
"something"
end
end
应该返回"something"
。但它"test"
反而返回:
Myclass.new("test") # => "test"
为什么?
类方法new
initialize
可能会返回任何内容,如您的示例所示,然后initialize
to的返回值对 fromnew
的返回值没有影响new
。
你不是在打电话initialize
,你在打电话new
。该initialize
方法本质上是一个钩子,在您创建新对象时执行,但通常从不直接调用。
如果你想得到你的initialize
方法的返回值,你需要调用你的initialize
方法。如果你调用一个完全不同的方法,你会得到一个完全不同的返回值是很正常的。