Mit*_*ins 33
您可以扩展Iterator,这将要求您实现next和hasNext方法:
class MyAnswer extends Iterator[Int] {
def hasNext = true
def next = 42
}
Run Code Online (Sandbox Code Playgroud)
但是,如果扩展Iterable,您将获得更大的灵活性,这需要您实现elements(或iterator在2.8中):
class MyAnswer extends Iterable[Int] {
def iterator = new Iterator[Int] {
def hasNext = true
def next = 42
}
}
Run Code Online (Sandbox Code Playgroud)
一个常见的习惯用法似乎是将迭代器暴露给一些私有集合,如下所示:
class MyStooges extends Iterable[String] {
private val stooges = List("Moe", "Larry", "Curly")
def iterator = stooges.iterator
}
Run Code Online (Sandbox Code Playgroud)
Jor*_*dão 10
对于一种方法,只需产量:
def odd(from: Int, to: Int): List[Int] =
for (i <- List.range(from, to) if i % 2 == 1) yield i
Run Code Online (Sandbox Code Playgroud)