Ruby日期计算:奇怪的输出

Ank*_*uhi 4 ruby syntax whitespace date

我观察到计算天差的ruby表达式给出了不同的输出,这取决于表达式中的空格.

Date.today             #=> #<Date: 2017-01-06 ((2457760j,0s,0n),+0s,2299161j)>
(Date.today - 60).to_s #=> "2016-11-07"
(Date.today-60).to_s   #=> "2016-11-07"
(Date.today- 60).to_s  #=> "2016-11-07"
(Date.today -60).to_s  #=> "2017-01-06" <- ???
Run Code Online (Sandbox Code Playgroud)

谁能帮我理解背后的原因?

Ale*_*kin 6

这是运营商优先权的问题.Date::today接受可选参数.

Date.today - 60
Run Code Online (Sandbox Code Playgroud)

被视为

Date.today() - 60
Run Code Online (Sandbox Code Playgroud)

(Date.today -60)
Run Code Online (Sandbox Code Playgroud)

被视为

Date.today(-60)
Run Code Online (Sandbox Code Playgroud)