假设现在是 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 # ?!
我在这里错过了什么?
最佳答案
区别在于:
Date.today + 1
是两个数值相加
Date.today +1
是对方法 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
这将打印以下控制台输出:
- Addition:
ITALY default(2299161)
- Parameter:
1
关于ruby-on-rails - Ruby 表达式求值 : whitespace matters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8924628/