Scala - 在初始化时从两个列表构造映射

时间:2016-11-25 14:18:46

标签: scala dictionary initialization

我是Scala编程的新手。

我想拥有这种不可变的地图:

Map[ (Int,Int), (List[BoolVar]) ]

从这两个清单中:

val courseName = List("Course1","Course2")
val serieName = List("Serie1","Serie2")

我的目标:

Map[0][0] // List[BoolVar] for "Course1""Serie1"
Map[0][0](0) // a BoolVar from "Course1""Serie1" List
....

我试过这个,但语法是假的:

val test = Map[ (Int,Int), (List[BoolVar]) ](
      for (course <- List.range(0,courseName.length) )
      for( serie <- List.range(0,serieName.length) ) 
      yield (course,serie) -> 
          for (indice <- List.range(0, 48))
          yield BoolVar( courseName(course) + " - " + serieName(serie) )  
);

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

这就是你要找的东西吗?只是一些小的改变。 但它会使用圆括号

val courseName = List("Course1","Course2")
val serieName = List("Serie1","Serie2")

 val m = {
   for {
course <- List.range(0,courseName.length) 
    serie <- List.range(0,serieName.length) 
   } yield (course, serie) -> {
    for (indice <- List.range(0, 48))
            yield BoolVar( courseName(course) + " - " + serieName(serie) )   
    }
}.toMap

println( m )