如何在Scala中打印任何列表?

时间:2011-07-10 05:27:47

标签: scala

目前我有一个打印Ints的方法

def printList(args: List[Int]): Unit = {
  args.foreach(println)
}

如何修改它以便它足够灵活,可以打印任何内容列表?

5 个答案:

答案 0 :(得分:47)

您不需要专用方法,所需的功能已经在集合类中:

println(myList mkString "\n")

mkString有两种形式,因此适用于List("a", "b", "c")

myList.mkString("[",",","]") //returns "[a,b,c]"
myList.mkString(" - ") // returns "a - b - c"
//or the same, using infix notation
myList mkString ","

我的示例只使用\n作为分隔符,并将结果字符串传递给println

答案 1 :(得分:22)

由于println适用于任何事情:

def printList(args: List[_]): Unit = {
  args.foreach(println)
}

甚至更好,所以你不仅限于List s:

def printList(args: TraversableOnce[_]): Unit = {
  args.foreach(println)
}

答案 2 :(得分:8)

你只需要使方法通用

def printList[A](args: List[A]): Unit = {
  args.foreach(println)
}

答案 3 :(得分:3)

def printList[T](args: List[T]) = args.foreach(println)

答案 4 :(得分:1)

或者练习的递归版本:)

1 - 声明你的名单

val myCharList: List[Char] = List('(',')','(',')')

2 - 定义你的方法

def printList( chars: List[Char] ): Boolean = {
  if ( chars.isEmpty ) true //every item of the list has been printed
  else {
    println( chars.head )
    printList( chars.tail )
  }
}

3 - 调用方法

printList( myCharList )

输出:

 (
 )
 (
 )