重写核心方法时,在某些情况下,方法的工作方式与重写

时间:2015-12-31 18:09:41

标签: ruby

我有这段代码:

class Humanoid
  def something
    return 123
  end
  def to_s
    puts "I am new person now, please let's have a fresh start!"
  end
end

mermaid = Humanoid.new

此代码:

p mermaid.to_s

输出:

I am new person now, please let's have a fresh start!

但是这个:

p mermaid.something.to_s

给了我这个输出:

"123"

当我直接调用这个重写方法时,它运行我编写的代码,而当我以第二种方式链接它时,它就像原始方法一样工作。有人可以解释如何以及会发生什么?

1 个答案:

答案 0 :(得分:2)

something返回Fixnum实例123Fixnum#to_s(不是您定义的实例)将其转换为String实例"123" ,由p检查。