我有一些递归代码我想重构使用从Enumerator尾递归,我可以简化递归看起来像这样,请忽略此功能要实现的功能。可以函数尾递归
@tailrec
def doStuff: List[Int] => Int = {
case Nil => 0
case x :: xs => doStuff(xs)
}
如果我摆脱tailrec注释,它做工精细,结构看起来像这样doStuff(doStuff(doStuff(..)))。它会有stackoverflow异常。
所以,我怎样才能使尾递归如果是
不是真的,这是Int的返回类型,我仍然想返回类型为一个函数。如果你看一下这个http://blog.higher-order.com/blog/2010/10/14/scalaz-tutorial-enumeration-based-io-with-iteratees/中enumerateFile的实现。几乎所有的递归函数都不是尾递归的。这是我想改变的。 – 2014-09-02 04:19:28
@Cloudtech [你可以用'doStuff _'调用把它变成函数值](http://scalafiddle.net/console/7bd66825e9a97424ffe5645549270832) – 2014-09-02 13:24:58