Skip to content

Instantly share code, notes, and snippets.

@erikerlandson
Created September 3, 2014 23:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save erikerlandson/a310ccd3c58a85f031dc to your computer and use it in GitHub Desktop.
Save erikerlandson/a310ccd3c58a85f031dc to your computer and use it in GitHub Desktop.
Demonstrate anonymous class nesting from Iterator drop method
import java.io.{StringWriter, PrintWriter}
import scala.reflect.ClassTag
def tracehead(e: Exception, substr: String = "slice"): String = {
val sw = new StringWriter()
e.printStackTrace(new PrintWriter(sw))
sw.toString.split('\n').takeWhile((s:String)=> !s.contains(substr)).drop(1).mkString("\n")
}
class TestIterator[T: ClassTag](val iter: Iterator[T]) extends Iterator[T] {
override def hasNext = iter.hasNext
override def next = {
println(tracehead(new Exception))
iter.next
}
}
def drop_test[T](itr: Iterator[T]) {
var n = 0
var iter = itr
while (iter.hasNext) {
n += 1
println(s"\ndrop # $n")
iter = iter.drop(1)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment