2015-05-20 2 views
-1

как распечатать список следующим образом? [42,[],1]распечатать списки с помощью mkString

val c : List[List[String]] = List(List("a", "c"), List("b"))

Я попытался с: println(c.mkString("[",",","]")) , но я не знаю, как это сделать скобки в середине.

+1

выглядит как интересный список – Drew

+3

Так, в принципе, вы хотите метод mkString, который делает глубокий рекурсивный mkString на все вложенные коллекции? – childofsoong

ответ

1

Насколько это близко?

val c : List[List[String]] = List(List("a", "c"), List("b")) 
c.map(x => x.mkString("[", ", ", "]")).mkString 

// String = [a, c][b] 
0

Вы можете определить функцию s, что делает строку ["a","b"] из списка List("a","b").

val c : List[List[String]] = List(List("a", "c"), List("b"))        
def s[T](list:List[T]) = list.mkString("[",", ","]") 
println(s(c map s))  // [["a", "c"], "b"] 

Или более общий вариант:

val d = List(List("a", List("c"), List.empty[String]), List("b")) 
def t[T](list: List[T]): String = list.map { 
    case a: List[_] => t(a) 
    case a   => a 
} mkString("[", ", ", "]") 

println(t(d))   // [[a, [c], []], [b]]