什么是ruby中的__repr__等价?

pro*_*eek 12 ruby python

__repr__python 的功能很自然,因为在自动使用print OBJECT时会调用它.

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

添加

我弄错了,p OBJECT似乎调用to_s方法如下.我从我对其他问题的答案中得到了一些提示.- Ruby的to_s方法问题(来自Axe第2版)

# 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
Run Code Online (Sandbox Code Playgroud)

Pra*_*are 12

  obj.inspect => string
Run Code Online (Sandbox Code Playgroud)

返回包含人类可读表示形式的字符串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"
Run Code Online (Sandbox Code Playgroud)

 obj.to_s => string
Run Code Online (Sandbox Code Playgroud)

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

资源