如果您运行以下内容:
puts Time
然后输出如下;
Time
令我觉得奇怪,但我还无法找出原因,这同样适用于Class
和Method
。
我可以看到这些是类,但为什么Ruby会将它们输出到控制台?
答案 0 :(得分:5)
班级Time
,Class
,Method
等本身就是班级Class
的实例。
Time.class
# => Class
Class
从Module#to_s
继承to_s
,这是该类的名称:
Time.to_s
# => "Time"
当您执行puts Time
时,Time
会被to_s
转换为字符串,因此会产生结果。
答案 1 :(得分:2)
一般来说,红宝石中的所有东西都是一个物体。在你的情况下,时间是类的对象。你可以通过
找到它Time.class => Class
如果将它传递给puts或p,则只需对其执行inspect方法即可。所以你可以得到相同的输出Time和Time.inspect
puts Time = puts Time.inspect
想要更好地解释一下。假设你有一个班级
class A
end
现在运行以下命令并观察输出
puts A
puts A.inspect
puts A.new
puts A.new.inpsect