...尽管它是尾巴呼叫优化?这是为什么抛出堆栈溢出异常?
def areStreamsEqual(stream1: InputStream, stream2: InputStream): Boolean =
{
val one = stream1.read()
val two = stream2.read()
if(one != two)
false
else if(one == -1 && two == -1)
true
else
areStreamsEqual(stream1, stream2)
}
有没有办法强制Scala编译器在这里做一个尾部调用优化?
如果方法没有通过[@tailrec](http://www.scala-lang.org/api/current/scala/annotation/tailrec.html)进行TCO处理,您可以告诉scalac抛出错误,注解。 (虽然这个注释不会强制/使其TCO'd)。 – 2011-06-09 19:18:52