ruby-on-rails - Ruby 表达式求值 : whitespace matters?

标签 ruby-on-rails ruby

假设现在是 1 月 19 日。如果您今天看这个问题,这并不难。

Date.today
 => Thu, 19 Jan 2012    # as expected

Date.today + 1
 => Fri, 20 Jan 2012    # as expected

Date.today+1
 => Fri, 20 Jan 2012    # as expected

Date.today +1
 => Thu, 19 Jan 2012    # ?!

我在这里错过了什么?

最佳答案

区别在于:

Date.today + 1 

是两个数值相加

Date.today +1 

是对方法 today 的调用,参数 sg(日历改革日)值为 +1

检查这一点的最佳方法是猴子修补包含调试输出的原始方法。以这个脚本为例:

require 'date'

class Date

  def self.today(sg=ITALY)
     puts "ITALY default("+sg.to_s+")" if sg==ITALY
     puts sg unless sg==ITALY
     jd = civil_to_jd(*(Time.now.to_a[3..5].reverse << sg))
     new0(jd_to_ajd(jd, 0, 0), 0, sg)
  end

end

puts "- Addition:"
Date.today + 1
puts "- Parameter:"
Date.today +1

这将打印以下控制台输出:

- Addition:
ITALY default(2299161)
- Parameter:
1

关于ruby-on-rails - Ruby 表达式求值 : whitespace matters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8924628/

相关文章:

ruby-on-rails - 如何在 Rails 应用程序后台监听 AWS SQS 消息?

ruby-on-rails - 为什么在 Rails 中需要 binstubs?

ruby-on-rails - 当前版本为 3.0.3 时如何生成较旧的 Rails 应用程序

ruby - selenium 2.4.0,如何检查是否存在警报

ruby-on-rails - unicorn 启动问题

javascript - Rails 的 RJS 替代方案

javascript - 从请求头读取数据

ruby-on-rails - 更改默认的多态类型列名

ruby-on-rails - HABTM 避免连接表中的欺骗

Ruby 等同于 C#'s ' yield' 关键字,或者,在不预分配内存的情况下创建序列