为什么 'puts Time' 的字符串输出为 "Time"
Why does 'puts Time' have a string output of "Time"
如果您运行满足以下条件:
puts Time
则输出如下;
Time
这让我觉得很奇怪,但我还不明白为什么,这同样适用于 Class
和 Method
.
我可以看到这些是 类,但是为什么 Ruby 将它们输出到控制台?
classes Time
、Class
、Method
等本身就是 class Class
.
Time.class
# => Class
Class
从 Module#to_s
继承 to_s
,这是 class:
的名称
Time.to_s
# => "Time"
当你执行puts Time
时,Time
被to_s
转换为字符串,因此得到结果
一般来说,ruby中的一切都是对象。在你的例子中,时间是 Class 的一个对象。你可以通过
找到它
Time.class => Class
如果您将它传递给 puts 或 p,那么它只是 运行 inspect 方法。所以你可以获得相同的输出时间和 Time.inspect
puts Time = puts Time.inspect
想更好地解释一下。假设您有 class
class A
end
现在运行下面和观察者输出
puts A
puts A.inspect
puts A.new
puts A.new.inpsect
如果您运行满足以下条件:
puts Time
则输出如下;
Time
这让我觉得很奇怪,但我还不明白为什么,这同样适用于 Class
和 Method
.
我可以看到这些是 类,但是为什么 Ruby 将它们输出到控制台?
classes Time
、Class
、Method
等本身就是 class Class
.
Time.class
# => Class
Class
从 Module#to_s
继承 to_s
,这是 class:
Time.to_s
# => "Time"
当你执行puts Time
时,Time
被to_s
转换为字符串,因此得到结果
一般来说,ruby中的一切都是对象。在你的例子中,时间是 Class 的一个对象。你可以通过
找到它Time.class => Class
如果您将它传递给 puts 或 p,那么它只是 运行 inspect 方法。所以你可以获得相同的输出时间和 Time.inspect
puts Time = puts Time.inspect
想更好地解释一下。假设您有 class
class A
end
现在运行下面和观察者输出
puts A
puts A.inspect
puts A.new
puts A.new.inpsect