方法的返回值是其最后一个语句的值。这意味着Myclass.new
遵循以下initialize
方法中定义super
的内容:
class Myclass < String
def initialize(arg)
super(arg.to_s)
"something"
end
end
应该返回"something"
。但它返回"test"
代替:
Myclass.new("test") # => "test"
为什么?
答案 0 :(得分:8)
班级方法new
initialize
,这可能会返回任何内容,如您的示例所示,然后从initialize
到new
的返回值对new
的返回值没有影响。
答案 1 :(得分:4)
您没有致电initialize
,而是致电new
。 initialize
方法本质上是一个在创建新对象时执行的钩子,但通常不会直接调用它。
答案 2 :(得分:1)
如果您想获得initialize
方法的返回值,则需要调用initialize
方法。如果你调用一种完全不同的方法,那么你将得到一个完全不同的返回值是正常的。