在控制台上工作时Date.today -12.months
和Date.today - 12.months
提供不同的输出,有人可以解释Ruby如何解析这两个语句吗?
为了精确,Date.today -12.months
的输出是当前日期,而Date.today - 12.months
返回一个旧的时间戳,这是我在第一种情况下的预期。
答案 0 :(得分:0)
Date.today -12.months
被解析为:
Date.today ((- 12).months)
Date.today - 12.months
被解析为:
Date.today - (12.months)
答案 1 :(得分:0)
我正在这里迷雾,但是@ sawa的回答非常棒,我会在下面解释一下。 请注意,Date.today采用start - 参数(与大多数Date函数一样)。
Date.today # returns a date
Date.today(-12) # accepts arguments: http://ruby-doc.org/stdlib-2.3.1/libdoc/date/rdoc/Date.html#method-c-today
Date.today.-(12) # implements '-' "operator"
最后一句话应该成为诀窍:如果像Date.today -12
那样调用它(见@sawas答案)处理类似Date.today(-12)
。相反,如果你给minus
一点空间,它会吃一个参数,如Date.today - 12
,等于Date.today.-(12)
,也可以写成Date.today.- 12
。