Dart 是否具有尾部调用优化 (TCO) 功能?

问题描述

我想在 Dart 中尝试一些函数式编程中的算法和模式,但其中很多都严重依赖递归,如果没有 Tail Call Optimization (TCO),这可能会导致严重的内存泄漏,这在实现时不是必需的一种语言。

Dart 团队或文档中是否有关于此主题的官方声明?通过使用 Dart 的开发工具和分析,我可能会弄清楚这是否当前存在于语言中,但是这样我将永远无法知道 Dart 团队关于该主题的意图,因此 存在的理由 这个问题。

解决方法

Dart 不支持尾调用优化。目前没有添加它的计划。

主要原因是它是一个你需要依赖才能使用的特性,否则你会得到非常低效的代码,可能会溢出堆栈,而且由于 JavaScript 目前不支持尾调用优化,该功能无法高效编译为 JavaScript。