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

时间:2014-08-10 20:38:26

标签: ruby initialization irb

我正在学习Ruby,并使用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。

1 个答案:

答案 0 :(得分:0)

运行Date后添加help 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附带了默认构造函数。

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