3

そのため、オブジェクトの配列からオブジェクトを選択しようとするコードがあります。オブジェクトが見つからない場合は、デフォルトを作成します。

lead_time = lead_times.select{|d| LeadTimeProfile.new unless d.day_of_week == day }

しかし、私が言えることから、これは私にdevaultLeadTimeProfileを返していません。

これを行う方法はありますか?それとも私はそれを正しく理解しましたか?

4

4 に答える 4

5

そのため、オブジェクトの配列からオブジェクトを選択しようとするコードがあります。オブジェクトが見つからない場合は、デフォルトを作成します。

Enumerable#findを見てください

lead_time = lead_times.find{ |d| d.day_of_week == day } || LeadTimeProfile.new
于 2013-01-31T04:17:08.463 に答える
0

最初に配列をフィルタリングしてから、構築を行います

Lead_time = Lead_times.select {| d | d.day_of_week == day} .map {| d | LeadTimeProfile.new(d)}

于 2013-01-31T04:19:03.500 に答える
0

ラムダをパラメーターとして渡すことも機能します。

lead_time = lead_times.find(lambda { LeadTimeProfile.new } ){ |d| d.day_of_week == day }
于 2019-05-29T23:40:02.230 に答える
0

カイルが投稿したものと同じ結果を得る別の方法があります。これと、またはゲートを使用することとの間に違いはありませんが、チェーンメソッドの呼び出しを少しクリーンにする以外はありません。

day = 2
lead_times.find(-> { LeadTimeProfile.new }) { |p| 
  p.day_of_week == day 
}.day_of_week
于 2019-11-18T17:01:29.127 に答える