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