考虑下面的代码,
1 var ip = ArrayBuffer[String]()
2 ip += "1"
3 println(ip)
4 ip.clear()
5 (1 to 10).foreach(ip += ("1"))
6 println(ip)这里,在行号:5中,在高阶函数中使用变量ip会导致异常。我知道使用var是不可取的,但我想知道如何在高阶函数中使用vars。或者除了管理状态之外还有其他选择。
发布于 2018-11-12 16:28:02
以下工作:
(1 to 10).foreach(_ => ip += "1")foldLeft更实用,您可以不使用可变状态:
(1 to 10).foldLeft(List.empty[String]){
case (acc, _) => "1" :: acc
}输出:
List[String] = List(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)https://stackoverflow.com/questions/53265857
复制相似问题