我有一些遞歸代碼我想重構使用從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