hasNext {iterors}R Documentation

Does This Iterator Have A Next Element

Description

wrapped <- ihasnext(obj) wraps an iteror object with the ihasNext class. Then hasNext(wrapped) will indicate if the iterator has another element.

Usage

hasNext(obj, ...)

ihasNext(obj, ...)

Arguments

obj

an iterable

...

extra arguments may be passed along to iteror.

Details

A class ihasNext was introduced in the itertools package to try to reduce the boilerplate around extracting the next value using iterators::nextElem. ihasNext is included in iterors for backward compatibility with iterator code; however, it is less needed when using the nextOr iteration method, as you can directly give an action to take at end of iteration.

Value

Logical value indicating whether the iterator has a next element.

Examples

# The bad old style of consuming an iterator in a loop with `nextElem`:
  it <- ihasNext(iteror(c('a', 'b', 'c')))
  tryCatch(repeat {
    print(iterators::nextElem(it))
  }, error=function(err) {
    if (conditionMessage(err) != "StopIteration")
      stop(err)
  })

# with ihasNext, this became:
  it <- ihasNext(iteror(c('a', 'b', 'c')))
  while (hasNext(it))
    print(iterators::nextElem(it))

# But using `nextOr` all you need is:
  iteror(c('a', 'b', 'c'))
  repeat print(nextOr(it, break))


[Package iterors version 1.0 Index]