コンソールで作業している間に、Date.today -12.months
とDate.today - 12.months
は異なる出力を与えますが、Rubyがこれらの2つの文をどのように解析するか説明できますか?Rubyが文を解析する仕組みを理解する
精度が高いとすると、Date.today -12.months
の出力は現在の日付ですが、Date.today - 12.months
は、最初のケースで予想した年のタイムスタンプを返します。
コンソールで作業している間に、Date.today -12.months
とDate.today - 12.months
は異なる出力を与えますが、Rubyがこれらの2つの文をどのように解析するか説明できますか?Rubyが文を解析する仕組みを理解する
精度が高いとすると、Date.today -12.months
の出力は現在の日付ですが、Date.today - 12.months
は、最初のケースで予想した年のタイムスタンプを返します。
Date.today -12.months
は次のように解析されます。
Date.today ((- 12).months)
Date.today - 12.months
として解析されます。私はここに霧の中で掘りますが、素晴らしい@沢の答えを取ってい
Date.today - (12.months)
'Date.today -360'と' Date.today 360'は、今日の日付を表す 'Date'オブジェクトを返します。なぜ前者が 'Date.today - 360'(例えば、' 5-2 'と '5-2'は同じです)と異なっているのですか?後者はなぜ' 222 360' ? –
@CarySwovelと私は違いは、 'Date.today()'が引数を受け入れることです。 '1'はしません。おそらく、演算子の優先順位は - > 'Date.today .-(360)'と 'Date.today(-360)'の間で発生します。 – Felix
、私は以下のようにそれを説明するだろう。 Date.todayは(ほとんどの日付関数のように)開始引数を取ることに注意してください。。
Date.today # returns a date
Date.today(-12) # accepts arguments: http://ruby-doc.org/stdlib-2.3.1/libdoc/date/rdoc/Date.html#method-c-today
Date.today.-(12) # implements '-' "operator"
最後の文は、トリックを行う必要があります。それはDate.today -12
のように呼び出された場合(@sawasの回答を参照してください)Date.today(-12)
ように対処。代わりに、minus
に少しのスペースを与えた場合は、は、Date.today.-(12)
に等しいDate.today - 12
のような引数をとります。これはDate.today.- 12
と書くこともできます。
Rubyには 'Fixnum#months'(または' Integer#months')というメソッドはありません。あなたはRailsのタグが必要です。 –
ヒント:警告を有効にするには '-w'を使います(irbとrubyの両方で動作します)。 – cremno