Ответ 1
Так как println
работает на что угодно:
def printList(args: List[_]): Unit = {
args.foreach(println)
}
Или даже лучше, поэтому вы не ограничены List
s:
def printList(args: TraversableOnce[_]): Unit = {
args.foreach(println)
}
В настоящий момент у меня есть метод, который печатает Ints
def printList(args: List[Int]): Unit = {
args.foreach(println)
}
Как мне изменить это, чтобы он был достаточно гибким, чтобы распечатать список чего-нибудь?
Так как println
работает на что угодно:
def printList(args: List[_]): Unit = {
args.foreach(println)
}
Или даже лучше, поэтому вы не ограничены List
s:
def printList(args: TraversableOnce[_]): Unit = {
args.foreach(println)
}
Вам не нужен выделенный метод, необходимая функциональность уже присутствует в классах коллекции:
println(myList mkString "\n")
mkString
имеет две формы, поэтому при a 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
Вам просто нужно сделать общий метод
def printList[A](args: List[A]): Unit = {
args.foreach(println)
}
def printList[T](args: List[T]) = args.foreach(println)
Или рекурсивная версия для практики:)
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 )
Вывод:
(
)
(
)