Ruby的ActiveSupport库中1.second.from_now和1.seconds.from_now之间的区别?

时间:2013-06-14 12:22:25

标签: ruby

我很好奇这两者之间的区别。

irb(main):001:0> require 'active_support/core_ext'
=> true
irb(main):002:0> 1.second.from_now == 1.seconds.from_now
=> false

他们看起来和我一样

irb(main):003:0> p 1.second.from_now; p 1.seconds.from_now; nil
2013-06-14 17:50:28 +0530
2013-06-14 17:50:28 +0530
=> nil

他们都有同一个班级

irb(main):004:0> 1.second.from_now.class == 1.seconds.from_now.class
=> true

2 个答案:

答案 0 :(得分:9)

两次通话之间的时间流逝,这就是他们不同的原因:

Time.now == Time.now
#=> false

Time#to_f显示它们相距甚远:

a, b = 1.second.from_now, 1.second.from_now
a.to_f  #=> 1371213500.506212
b.to_f  #=> 1371213500.5062568

second / seconds的致电是相同的:

1.second == 1.seconds
#=> true

答案 1 :(得分:6)

1.second1.seconds的别名,只是为了让您的代码更具可读性。你可以看到它in the Numeric class in the Rails source