什么是ruby中的__repr__等价?

时间:2010-04-12 20:19:23

标签: python ruby

python的__repr__函数非常有用,因为在自动使用print OBJECT时会调用它。

它有红宝石等价吗?我认为这是to_s,但是,我有p OBJECT似乎没有调用to_s方法。

我弄错了,p OBJECT似乎调用to_s方法如下。 我从我对其他问题的答案中得到了一些提示。 - Ruby's to_s method question (from Axe book 2nd edition)

# Sample code from Programing Ruby, page 24
class Song
  def to_s
    "Song"
  end
end

class Songson < Song
  def to_s
    super + "<Songson>"
  end
end

song = Songson.new()
p song

2 个答案:

答案 0 :(得分:11)

  obj.inspect => string

返回包含人类可读表示obj的字符串。 如果未覆盖,请使用to_s方法生成字符串。

   [ 1, 2, 3..4, 'five' ].inspect   #=> "[1, 2, 3..4, \"five\"]"
   Time.new.inspect                 #=> "Wed Apr 09 08:54:39 CDT 2003"

 obj.to_s => string

返回表示obj的字符串。默认to_s打印对象的类和对象id的编码。作为特例,作为Ruby程序的初始执行上下文的顶级对象返回“main”。

source

答案 1 :(得分:3)

p对象使用#inspect。