为什么'puts Time'的字符串输出为"Time"

Har*_*rry 0 ruby class puts output

如果您运行以下内容:

puts Time
Run Code Online (Sandbox Code Playgroud)

然后输出如下;

Time
Run Code Online (Sandbox Code Playgroud)

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

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

Yu *_*Hao 5

这些课程Time,Class,Method,等,都是他们自己的类的实例Class.

Time.class
# => Class
Run Code Online (Sandbox Code Playgroud)

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

Time.to_s
# => "Time"
Run Code Online (Sandbox Code Playgroud)

执行时puts Time,Time将转换为字符串to_s,因此结果.