Kev*_*vis 18 ruby ruby-on-rails
想象一下,这是1月19日.如果你今天看这个问题,这并不难.
Date.today
=> Thu, 19 Jan 2012 # as expected
Date.today + 1
=> Fri, 20 Jan 2012 # as expected
Date.today+1
=> Fri, 20 Jan 2012 # as expected
Date.today +1
=> Thu, 19 Jan 2012 # ?!
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
fyr*_*fyr 17
不同之处在于:
Date.today + 1
Run Code Online (Sandbox Code Playgroud)
是两个数值的加法和
Date.today +1
Run Code Online (Sandbox Code Playgroud)
是today带有参数sg(日历改革日)的方法调用值+1
检查这个的最好方法是使用包含的调试输出来修补原始方法.以此脚本为例:
require 'date'
class Date
def self.today(sg=ITALY)
puts "ITALY default("+sg.to_s+")" if sg==ITALY
puts sg unless sg==ITALY
jd = civil_to_jd(*(Time.now.to_a[3..5].reverse << sg))
new0(jd_to_ajd(jd, 0, 0), 0, sg)
end
end
puts "- Addition:"
Date.today + 1
puts "- Parameter:"
Date.today +1
Run Code Online (Sandbox Code Playgroud)
这将打印以下控制台输出:
- Addition:
ITALY default(2299161)
- Parameter:
1
Run Code Online (Sandbox Code Playgroud)