13

私は今日Railsコードを突っ込んでいて、このスニペットに出くわしました:

new_date(*::Date._parse(string, false).values_at(:year, :mon, :mday))

アスタリスク-ダブルコロン(または、必要に応じてスプラット-ダブルコロン)は*::Date何をしますか?

おそらく、それは特に名前空間のあるクラスのスコープと関係があります...しかし、作成者が標準クラスDateを使用するだけでなく、それを含めるのに十分な必要があります。Date

4

1 に答える 1

14

私はコードを間違って読んでいました。「*::」演算子ではありません。

何が起こっているのか:

  • Dateグローバルスコープでクラスを検索します( ::Date
  • _parse()値のハッシュを取得するために呼び出す
  • values_atハッシュを配列に変換するための呼び出し
  • 配列をメソッド呼び出しの複数の引数に変換する一般的な関数でアスタリスク演算子を使用します
  • を呼び出し、、、、および引数のnew_date()配列要素を渡します。yearmonmday

*::演算子の間にスペースがないため、混乱しました。:-\

于 2013-01-06T23:37:24.950 に答える