Defining a recursive method for an object:
object Recursive { def recurse(maxDepth: Int = 10): Unit = { if (maxDepth == 0) throw new Exception recurse(maxDepth - 1) } }
gives:
scala> Recursive.recurse(10) java.lang.Exception at Recursive$.recurse(<console>:7) at .<init>(<console>:7) at .<clinit>(<console>) at RequestResult$.<init>(<console>:9) at RequestResult$.<clinit>(<console>) at RequestResult$scala_repl_result(<console>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at scala.tools.nsc.Interpreter$Request$$anonfun$loadAndRun$1$$anonfun$apply$17.apply(Interpreter.scala:988) at scala.tools.nsc.Interpreter$Request$$anonfun$loadAndRun$1$$anonfun$apply$17.apply(Interpreter.scala:988) at scala.util.control.Exception$Catch.apply(Exception.scal...
But defining it in a class:
class Recursive { def recurse(maxDepth: Int = 10): Unit = { if (maxDepth == 0) throw new Exception recurse(maxDepth - 1) } }
gives:
scala> new Recursive recurse(10) java.lang.Exception at Recursive.recurse(<console>:7) at Recursive.recurse(<console>:8) at Recursive.recurse(<console>:8) at Recursive.recurse(<console>:8) at Recursive.recurse(<console>:8) at Recursive.recurse(<console>:8) at Recursive.recurse(<console>:8) at Recursive.recurse(<console>:8) at Recursive.recurse(<console>:8) at Recursive.recurse(<console>:8) at Recursive.recurse(<console>:8) at .<init>(<console>:7) at .<clinit>(<console>) at RequestResult$.<init>(<console>:9) at RequestResult$.<clinit>(<console>) at RequestResult$scala_repl_result(<console>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcc..
The methods are identical. Why is it not a recursive tail, if defined in a class?
scala recursion
Knut arne vedaa
source share