了解Ruby如何解析语句

时间:2016-04-28 05:18:44

标签: ruby-on-rails ruby

在控制台上工作时Date.today -12.monthsDate.today - 12.months提供不同的输出,有人可以解释Ruby如何解析这两个语句吗?

为了精确,Date.today -12.months的输出是当前日期,而Date.today - 12.months返回一个旧的时间戳,这是我在第一种情况下的预期。

2 个答案:

答案 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