如果您运行以下命令:
puts Time
那么输出如下;
Time
这让我觉得很奇怪,但我还不知道为什么,这同样适用于Class
, 和Method
.
我可以看到这些是类,但为什么 Ruby 会将它们输出到控制台?
类Time
, Class
,Method
等本身就是类的实例Class
。
Time.class
# => Class
Class
继承to_s
自Module#to_s
,这是类的名称:
Time.to_s
# => "Time"
当你执行时puts Time
,Time
被转换为字符串to_s
,因此结果。
一般来说,ruby 中的一切都是对象。在您的情况下,时间是类的对象。您可以通过以下方式找到它
Time.class => Class
如果您将其传递给 puts 或 p,那么它只需在其上运行检查方法。所以你可以获得相同的输出 Time 和 Time.inspect
puts Time = puts Time.inspect
想解释得更好一点。假设你有一堂课
class A
end
现在运行以下命令并观察输出
puts A
puts A.inspect
puts A.new
puts A.new.inpsect