2016-11-30 82 views
1

我想定義一個二維列表前一個for循環事後我想追加到它1D列出一個for循環,像這樣:定義二維表並追加名單,它在一個for循環,斯卡拉

var 2dEmptyList: listOf<List<String>> 
for (element<-elements){ 
    ///do some stuff 
    2dEmptyList.plusAssign(1dlist) 
} 

上面的代碼不起作用。但我似乎無法找到解決方案,它非常簡單!

+0

你要定義一個'列表[列表[字符串]'和在List [String]'的for循環中追加新的List [String]? –

+0

是的,確切地說。你描述得比我更好。 – Kratos

+0

你確定這是Scala嗎?看起來像kotlin('listOf','<''''''')。 – dveim

回答

1
scala> val elements = List("a", "b", "c") 
elements: List[String] = List(a, b, c) 

scala> val twoDimenstionalList: List[List[String]] = List.empty[List[String]] 
twoDimenstionalList: List[List[String]] = List() 

scala> val res = for(element <- elements) yield twoDimenstionalList ::: List(element) 
res: List[List[java.io.Serializable]] = List(List(a), List(b), List(c)) 

更妙的是:

scala> twoDimenstionalList ::: elements.map(List(_)) 
res8: List[List[String]] = List(List(a), List(b), List(c)) 
1

如果你想2dEmptyList是可變的,請考慮使用scala.collection.mutable.ListBuffer

scala> val ll = scala.collection.mutable.ListBuffer.empty[List[String]] 
ll: scala.collection.mutable.ListBuffer[List[String]] = ListBuffer() 

scala> ll += List("Hello") 
res7: ll.type = ListBuffer(List(Hello)) 

scala> ll += List("How", "are", "you?") 
res8: ll.type = ListBuffer(List(Hello), List(How, are, you?)) 
+0

謝謝你的建議 – Kratos