to_s未返回预期值

时间:2016-10-20 08:46:05

标签: ruby

考虑以下代码

class Raj
  def to_s
    puts 'abc'
    return 'hello'
  end
end

obj=Raj.new
puts obj

输出

abc
hello # hello is printed because to_s returned the value of 'hello'

但请查看下面的代码段

class Raj
  def to_s
    puts 'abc'
  end
end

obj=Raj.new
puts obj

输出

abc
<Raj:0x899610> #Object address this time

这里打印对象的地址,但根据上面的代码,它必须打印返回的值,所以对于第二个编码片段,它必须是nil,因为puts会返回nil的值,对吗?为什么不打印?我知道无法打印零值但是必须打印空白区域,但是它打印了对象地址,因此它确定它不是零。为什么会这样?

0 个答案:

没有答案