我最近正在做一个exercism.io运动,以确定一个人的gigagsecond周年纪念,给她/他的生日。 If you want, you can nitpick me here
在做这个练习的时候,我发现如果我做了不 require 'date'
,我会得到不同的结果。
vs使用require 'date'
。
此外,我在repl.it中尝试了同样的操作,如果我尝试使用Date
而不使用require 'Date'
,则会出错。
我能够找到对“未初始化的常量”错误(Why is Ruby's Date class automatically loaded but DateTime is not?和Why does Date exist in Ruby before it is required?)的一些回应。这导致我走上版本化的道路是罪魁祸首;但是,我找不到任何压倒一切的明确反应。
我正在使用:Ruby 2.1.3,irb 0.9.6(我相信使用Ruby 2.0.0)和repl.it正在使用Ruby 1.8.7(beta)。
那么,这是一个版本的东西吗? ...一个irb vs Ruby的东西? ...标准库中的Date类+ Date模块的东西?或者只是我只是一个n00b?
最后我用irb中的日期对象搞砸了一些并且收到错误'也许是IRB错误!'
(FWIW,我在irb中为'时间'做了同样的事情,但这一次,无论我是否需要'时间',都得到相同的结果。)
答案 0 :(得分:1)
Rubygems(默认情况下是必需的)defines a empty, non-functioning Date
class在早于2.4.0的版本中(Rubygems版本,而不是Ruby)。这是fixed recently(另见Ruby bug report)。带有修复程序的Rubygems版本可能会包含在Ruby 2.2中。
答案 1 :(得分:0)
这不是IRB问题。至少在Ruby 2.1中,require 'date'
加载Date和DateTime类。实际上,Date
doc的第二行表示"' date'提供两个类Date和DateTime。"
档案t.rb
:
require 'date'
p DateTime.new(2014,01,01,01,01,01).to_time
Carys-MacBook-Pro:ruby_src Cary $ ruby" t.rb"
#=> 2013-12-31 17:01:01 -0800
它似乎也加载了Time类:
p Date.today.to_time.to_a.join(' ')
#=> "0 0 0 29 10 2014 3 302 true PDT"
虽然我认为可能to_time
加载Time
。有人可以澄清这最后一点吗?