加载帮助文档会改变irb结果



我正在学习Ruby,并进入irb使用Date类进行测试。简而言之,我做了以下工作:

$ irb 
irb(main):001:0> Date.new 
=> #<Date:0x007f983103ee60> 
irb(main):002:0> Date.constants 
=> [] 
irb(main):003:0> help Date 
=> nil 
irb(main):004:0> Date.constants 
=> [:MONTHNAMES, :ABBR_MONTHNAMES, :DAYNAMES, :ABBR_DAYNAMES, :ITALY, :ENGLAND, :JULIAN, :GREGORIAN, :Infinity] 
irb(main):005:0> 

我被这个弄糊涂了。问题:

  • 为什么阅读帮助文档会导致Date.constants的输出改变?
  • 假设help正在加载/初始化某些东西。这是什么?为什么Date.new能起作用?
  • 是什么这是我需要担心的时候写。rb文件?

这是很难谷歌。我使用ruby 2.1.2和irb 0.9.6.

在运行help Date之后添加Date常量的最可能原因是在命令执行的某个地方调用了require 'date'(或require 'time'):

2.1.0 :001 > Date.constants
 => [] 
2.1.0 :002 > require 'date'
 => true 
2.1.0 :003 > Date.constants
 => [:MONTHNAMES, :ABBR_MONTHNAMES, :DAYNAMES, :ABBR_DAYNAMES, :ITALY, :ENGLAND, :JULIAN, :GREGORIAN, :Infinity] 

对于Date.new,它可以工作,因为Date带有默认构造函数。

我怀疑这对你来说不会有什么问题。

最新更新