Как Вы возвращаете Iterator в Скале?

Что я должен сделать, чтобы быть в состоянии возвратить Iterator из метода/класса? Как можно было бы добавить что черта к классу?

21
задан Geo 25 January 2010 в 20:39
поделиться

2 ответа

Вы можете расширить Iterator, для чего потребуется реализовать методы next и hasNext:

  class MyAnswer extends Iterator[Int] {
    def hasNext = true
    def next = 42
  }

Но вы получите больше гибкости, если вы расширите Iterable, для чего потребуется реализовать элементы elements (или iterator во 2. 8):

  class MyAnswer extends Iterable[Int] {
    def iterator = new Iterator[Int] {
      def hasNext = true
      def next = 42
    }
  }

Обычная идиома, похоже, заключается в том, чтобы выставить итератор в какую-то частную коллекцию, например:

  class MyStooges extends Iterable[String] {
    private val stooges = List("Moe", "Larry", "Curly")
    def iterator = stooges.iterator
  }
33
ответ дан 29 November 2019 в 20:25
поделиться

Для метода, просто дают :

def odd(from: Int, to: Int): List[Int] = 
  for (i <- List.range(from, to) if i % 2 == 1) yield i
10
ответ дан 29 November 2019 в 20:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: