Ruby中的__repr__对应是什么?
Python中的__repr__
函数很特别,因为当你用print输出一个对象时,它会自动被调用。
在Ruby中有没有类似的东西呢?我以为是to_s方法,但我发现用p输出对象时似乎并没有调用to_s方法。
补充说明
我搞错了,p输出对象时其实是调用了to_s方法,具体情况如下。 我从我之前提问的答案中得到了些提示。 - Ruby的to_s方法问题(来自Axe书第二版)
# 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 个回答
3
p 对象使用 #inspect 方法。
20
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.’‘