Попробуйте это:
def showColumn(xs: List[String]): String = xs.map(x => if(x == "") " " else x).mkString
или, альтернативно:
def showColumn(xs: List[String]): String = xs.map(x => if(x.isEmpty) " " else x).mkString
Оба работают, заменяя пустые строки в списке на пробелы, затем объединяя каждую строку в списке в одинstring.
Если вам абсолютно необходимо сделать эту функцию рекурсивной, то решение, не являющееся хвост-рекурсивным , будет выглядеть так:
def showColumn(xs: List[String]): String = xs match {
case Nil => ""
case x :: xs1 => (if(x.isEmpty) " " else x) + showColumn(xs1)
}
Наконец, хвостовая рекурсия версия немного сложнее, так как использует вспомогательную функцию:
import scala.annotation.tailrec
def showColumn(xs: List[String]): String = {
// Tail recursive helper function.
@tailrec
def nextStr(rem: List[String], acc: String): String = rem match {
case Nil => acc
case x :: xs1 => nextStr(xs1, acc + (if(x.isEmpty) " " else x))
}
// Start things off.
nextStr(xs, "")
}