目前我有一个打印Ints的方法
def printList(args: List[Int]): Unit = {
args.foreach(println)
}
如何修改它以便它足够灵活,可以打印任何内容列表?
答案 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 )
输出:
(
)
(
)