相关疑难解决方法(0)

在Scala中避免while循环有什么好处吗?

阅读由专家撰写的Scala文档可以得到尾部递归优于while循环的印象,即使后者更简洁明了.这是一个例子

object Helpers {
    implicit class IntWithTimes(val pip:Int) {
            // Recursive
        def times(f: => Unit):Unit = {
            @tailrec
            def loop(counter:Int):Unit = {
                if (counter >0) { f; loop(counter-1) }
            }
            loop(pip)
        }

            // Explicit loop
        def :@(f: => Unit) = {
            var lc = pip
            while (lc > 0) { f; lc -= 1 }
        }   
    }
}   
Run Code Online (Sandbox Code Playgroud)

(要清楚的是,专家根本没有解决循环问题,但在这个例子中,他们选择以这种方式编写一个循环,就好像本能一样,这就是我提出的问题:我是否应该发展出类似的本能.. )

while循环唯一可能更好的方面是迭代变量应该是循环体的局部变量,并且变量的变异应该在固定的位置,但Scala选择不提供该语法.

清晰度是主观的,但问题是(尾部)递归样式是否提供了改进的性能?

scala

18
推荐指数
2
解决办法
8433
查看次数

标签 统计

scala ×1