实现Iterable

syn*_*pse 10 iterable scala

如何实现Scala等效于Java Iterable<T>和C#IEnumerable<T>?基本上,我希望我的收藏是可映射,过滤等应集合类扩展什么特点以及是否有简便的方法(类似yield returnyield break在C#)来创建枚举?

dhg*_*dhg 14

实现Iterable特征.所需要的只是iterator方法.所有其他方法(map,filter等)都是免费的.

class MyIterable[T](xs: Vector[T]) extends Iterable[T] { 
  override def iterator = xs.iterator 
}

val a = new MyIterable(Vector(1,2,3))
a.map(_+1) // res0: Iterable[Int] = List(2, 3, 4)
a.filter(_%2==1) // res1: Iterable[Int] = List(1, 3)
Run Code Online (Sandbox Code Playgroud)