使用mkString打印列表

时间:2015-05-20 20:57:42

标签: scala

如何打印列表如下? [42,[],1]

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

我试过: println(c.mkString("[",",","]")) 但我不知道,如何在中间做括号。

2 个答案:

答案 0 :(得分:2)

这有多接近?

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

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

答案 1 :(得分: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]]