我是 Scala 的新手。我正在尝试做以下事情:
def foo(n: Int): List[Int] = {
def worker(i: Int, acc: List[Int]): List[Int] = {
if (i == 0) acc
else worker(i - 1, compute(i) :: acc)
}
worker(n, List[Int]())
}
foo
从 0 迭代到n
- 对于每次迭代,它都会在不可变列表上更新/累积。
我想要做的是使用类似的东西更简洁地表达foldLeft
。
如果遍历 List,则可以使用foo
高阶变换函数,例如map
和。reduceLeft
我可能会利用这种功能,但想知道这种任务是否有更优雅的方式。
C++ 中的相应代码如下所示:
list<int> foo(int n) {
list<int> result;
for (int i = 0; i < n; ++i)
result.push_back(compute(i));
return result;
}