Method: When::Parts::Enumerator#succ

Defined in:
lib/when_exe/parts/enumerator.rb

#succComparable

Note:

次の要素がない場合 rewind や、StopIteration例外発生は行わない

次の要素を取り出す

Returns:

  • (Comparable)
    次の要素あり - 次の要素
    次の要素なし - nil


207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# File 'lib/when_exe/parts/enumerator.rb', line 207

def succ
  value = @current
  if (@count_limit.kind_of?(Numeric) && @count >= @count_limit)
    @current = nil
  else
    loop do
      @current = _succ
      break unless (@current)
      next if (@current == :next)
      @current = GeometricComplex.new(@current, @duration) if @duration
      next if _exclude(@current)
      case @direction
      when :reverse
        next if (@current > @first)
        @current = nil if (@last && @current < @last)
        break
      else
        next if (@current < @first)
        @current = nil if (@last && @current > @last)
        break
      end
    end
    @count += 1
    _exclude(@current) if (@current)
  end
  return value
end