gpt4 book ai didi

ruby-on-rails - Rails : Date. 今天 - 1.day

转载 作者:数据小太阳 更新时间:2023-10-29 06:43:36 25 4
gpt4 key购买 nike

使用 rails 控制台,我只是被这个咬住了:

假设今天是 12 月 11 日。

Date.today-1.day   # December 10  (no spaces)
Date.today - 1.day # December 10 (a space on both sides of the minus sign)
Date.today -1.day # December 11 whaaaat?
Date.today -5.days # Still december 11!

有人能解释一下这是怎么回事吗?我有点担心这在代码中很容易被遗漏。关于如何对此进行编码还有其他建议吗?

最佳答案

您看到的差异是由 ruby​​ 解析代码的方式造成的。在您的情况下,您偶然发现了语法上的细微差别,这极大地改变了代码的评估方式。

您的前两个示例实际上是涉及对象操作的表达式。因此

Date.today-1.day
Date.today - 1.day

都等同于

Date.today.send(:-, 1.day)
# a "fancy" way to write
Date.today - 1.day

你的后两个例子

Date.today -1.day
Date.today -5.days

实际上是对 Date.today 方法的直接方法调用,因此等同于

Date.today( (-1).day )

这是因为减号被解释为 1 的前缀(因此被解析为数字 -1)。由于 ruby​​ 的两个属性,这种解释是可能的并且不会引发任何错误:

  • 只要结果明确,调用方法时括号是可选的
  • Date.today 接受一个可选参数,表示使用的日历

您收到的实际结果在一定程度上取决于您的环境,因为 Rails 似乎在这里覆盖了一些 Date 方法。在普通的 Ruby 中,你会得到不同的日期,但它仍然有效。

关于ruby-on-rails - Rails : Date. 今天 - 1.day,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20526380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com