0

如果您运行以下命令:

puts Time

那么输出如下;

Time

这让我觉得很奇怪,但我还不知道为什么,这同样适用于Class, 和Method.

我可以看到这些是类,但为什么 Ruby 会将它们输出到控制台?

4

2 回答 2

5

Time, Class,Method等本身就是类的实例Class

Time.class
# => Class

Class继承to_sModule#to_s,这是类的名称:

Time.to_s
# => "Time"

当你执行时puts TimeTime被转换为字符串to_s,因此结果。

于 2015-08-02T11:47:06.600 回答
2

一般来说,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
于 2015-08-02T12:00:52.180 回答