-> irb
>> (Date.today +3).to_s
=> "2009-10-22"
>> (Date.today + 3).to_s
=> "2009-10-25"
在“+3”和“+ 3”之间,有区别吗?
答案 0 :(得分:4)
如果您感到好奇,请使用今日方法"specifies the Day of Calendar Reform"的可选参数,以便转换为其他日期格式。
答案 1 :(得分:1)
我意识到这一定是令人沮丧的错误。当使用方法调用具有可选括号的语言时,空格是一个微妙的问题。请考虑以下事项:
square(2+2)*2 # square(4)*2 = 16*2 = 32
square (2+2)*2 # square(4*2) = square(8) = 64
你的情况比较棘手,因为没有空格的+3实际上是一元运算符。 ! 〜和+一元运算符具有最高优先级。
同样有趣的是 - 一元运算符的优先级低于取幂运算符。为此
-4**2 # -(4**2) = -16
答案 2 :(得分:0)
在我看来,+在第一种情况下与3绑定。那就是翻译看到Date.today(+3)
。如果在加号之后有空格,则翻译会看到(Date.today) + (3)
。
使用+来表示正数不是很常见,因为数字开头是正数,但考虑负数的情况:更容易看出Date.today -3
意味着除Date.today - 3
之外的其他内容。