我有一个Scala中的整数列表列表,而解释器/编译器没有抛出任何警告,当我去运行工作表时,我收到错误“找不到:值表”
var mylist: List[List[Int]]
for (i <- 1 to 10) {
mylist = List(List(i, Random.nextInt(20000), quantity(i)))
}
据我所知,我是一个Int,nextInt将返回一个Int,数量是一个预定的Ints列表。
我猜我需要实例化表变量,我应该怎么做呢?
答案 0 :(得分:2)
持有不可变集合的var
和持有可变集合的val
之间存在差异。前者(var
)可以在以后保存不同的集合。后者(val
)只能保存给定的集合,但该集合的内容可能会随着时间而变化。
即使mylist
是var
,List[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