2016-11-25 62 views
1

我是Scala編程的新手。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

是你在找什麼?只是一些小的變化。 但它會使用圓括號

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) 
+0

謝謝。我認爲就是這樣。我只需要嘗試... – jy95

+0

慢慢來。問問題,如果不乾淨。標記回答如果確定:) – Pavel

+0

僅供參考:http://docs.scala-lang.org/tutorials/tour/sequence-comprehensions.html – Pavel