absoverride.scala
来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 38 行
SCALA
38 行
abstract class AbsIterator { type T def hasNext: boolean def next: T}trait RichIterator extends AbsIterator { def foreach(f: T => unit): unit = while (hasNext) f(next)}class StringIterator(s: String) extends AbsIterator { type T = char private var i = 0 def hasNext = i < s.length() def next = { val x = s.charAt(i); i = i + 1; Console.println("next: " + x); x }}trait SyncIterator extends AbsIterator { abstract override def hasNext: boolean = synchronized(super.hasNext) abstract override def next: T = synchronized { Console.println("<sync>"); val x = super.next; Console.println("</sync>"); x }}trait LoggedIterator extends AbsIterator { abstract override def next: T = { val x = super.next; Console.println("log: " + x); x }}class Iter2(s: String) extends StringIterator(s) with SyncIterator with LoggedIterator; object Test { def main(args: Array[String]): unit = { class Iter extends StringIterator(args(0)) with RichIterator with SyncIterator with LoggedIterator val iter = new Iter iter foreach Console.println }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?