2013-06-14 6 views
5

2人の違いは何か不思議でした。RubyのActiveSupportライブラリの1.second.from_nowと1.seconds.from_nowの違いは?

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 

答えて

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 
+0

となっています。私は、時間オブジェクトを印刷すると分数秒を切り捨てると思います。 – wenderen

+0

私の答えをちょうど更新しました。 – Stefan

6

1.second同じクラスを持っているだけで、私は推測するあなたのコードを読みやすくするために、1.secondsの別名です。あなたはそれを見ることができますin the Numeric class in the Rails source。彼らが異なっている理由の両方のコール間の経過

+0

ありがとうございました。しかし、なぜfrom_nowへの2つの呼び出しが==演算子の下で等しくないのですか?私は 'def f; 1;終わり;エイリアス:g:f; g == f'を返し、 'true'を返します。何か不足していますか? – wenderen

+2

"now"は現在 "now"と同じではないため、今の時点では:-D –

関連する問題