0

基本的にループであるメソッドがあり、毎回最後に自分自身を呼び出します。日付が特定の時点に達したときにメソッドが自分自身を呼び出さないための最良の方法は何ですか? 反復ごとに 1 日が追加され、基本的にその日の統計が処理されます。以下のようになります。

def loop(start_day)
  date = start_day

  #do a bunch of stuff

  date = date +1.day

  if date > Time.now
    puts "loop should be over"
  end

  loop(date)
end
4

4 に答える 4

3

反復ごとに 1 日が追加されます

あなたが投稿したコードには当てはまりません。コードでは、開始日に 1 日を 1 回追加すると、増分された日付 ( ) ではなく古い日付 ( ) で再帰するため、同じ日付を何も処理し続けます。start_datedate

日付が特定の時点に達したときにメソッドが自分自身を呼び出さないための最良の方法は何ですか?

ifまたは、この場合は、既に持っているelseの中に再帰呼び出しを入れるだけです。if

于 2013-04-22T15:25:38.263 に答える
0

再帰関数にはベース ケース (ストップ ケース) が必要です。

例:

def loop(date)
    if date == certain_point
      return [something_for_stop]
    end

    loop(date - 1)
end
于 2013-04-22T15:26:21.473 に答える