【发布时间】:2012-01-23 20:54:49
【问题描述】:
我正在使用 Scala 来尝试掌握它,所以这个代码示例只是学术性的。
我正在尝试将一个可变列表传递给一个函数,让该函数对其执行工作,然后在函数调用之后我可以使用更新后的列表。
var data: List[Int] = List()
// Call to function to fill a list
data = initList(data)
// Output only 0-100
data.foreach( num => if (num < 100) { println(num) })
def initList(var data: List[Int]) : List[Int] = {
for ( i <- 0 to 1000 )
{
data = i :: data
}
data = data.reverse
data
}
上面唯一无法编译的代码是def initList() 中的var,因为数据是val,所以我无法在函数内对其执行任何更改。
首先让我说,我知道在 Scala 中,mutators 通常不受欢迎,所以我不仅愿意直接回答我的问题,而且愿意接受更好的方法来完全做到这一点。偶尔在项目中会有一段数据从一个地方传到另一个地方要更新,但是如果你不能将数据传递给要更改的函数,那么有什么好的替代方法呢?
我已经阅读了教程和谷歌搜索,我假设我找不到太多关于它的信息,因为在 Scala 中通常不这样做。
【问题讨论】: