5

我很好奇两者之间有什么区别。

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
4

2 回答 2

10

两个调用之间的时间流逝,这就是它们不同的原因:

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
于 2013-06-14T12:34:15.350 回答
6

1.second是 的别名1.seconds,我猜只是为了让您的代码更具可读性。您可以在 Rails 源代码的 Numeric 类中看到它。

于 2013-06-14T12:27:00.487 回答