在Scala中实例化List列表

时间:2016-12-01 06:56:37

标签: scala list functional-programming nested-lists

我有一个Scala中的整数列表列表,而解释器/编译器没有抛出任何警告,当我去运行工作表时,我收到错误“找不到:值表”

var mylist: List[List[Int]]

for (i <- 1 to 10) {
mylist = List(List(i, Random.nextInt(20000), quantity(i)))
}

据我所知,我是一个Int,nextInt将返回一个Int,数量是一个预定的Ints列表。

我猜我需要实例化表变量,我应该怎么做呢?

2 个答案:

答案 0 :(得分:2)

持有不可变集合的var和持有可变集合的val之间存在差异。前者(var)可以在以后保存不同的集合。后者(val)只能保存给定的集合,但该集合的内容可能会随着时间而变化。

即使mylistvarList[List[Int]]也是不可变的。您无法修改其内容。

要创建您想要的集合,您可以尝试这样的事情。

val mylist = (1 to 10).map(x => List(x, Random.nextInt(2000), quantity(x))).toList

答案 1 :(得分:2)

由于@jwvh提到List是不可变的,所以你应该包括完整的公式来计算你的列表而不是逐个元素的计算

import scala.util.Random

val quantity = List(1,2,4,8,16)
val myList =  for {
  q ← quantity
} yield List.fill(q)(Random.nextInt(20000))

如果您真的喜欢命令式方法,可以使用可变构建器来创建集合

import scala.collection.mutable.ListBuffer
import scala.util.Random

val quantity = List(1,2,4,8,16,32)
val myListBuffer = ListBuffer.empty[List[Int]]
for (i ← 0 until 6 )
    myListBuffer += List.fill(quantity(i))(Random.nextInt(20000))
val myList = myListBuffer.toList