Zauważ, że implementacja foldLeft zakłada niepustą listę
Frawr
5
Dzięki! W przypadku, gdy ktoś chce zawrzeć elementy ciągów w cudzysłowie, pomocny jest również mkString: theStrings.mkString ("'", "'," "," "")
Niko Gamulin
1
@Frawr Ta strona prowadzi do szeregu przykładów oldfashionedsoftware.com/2009/07/30/…, które obejmują implementację, która wykorzystuje dopasowanie wzorca dla pustej skrzynki listy (zero). Zmiana naśladująca mkString wyglądałaby następująco: def mkFoldLeftString[A](list:List[String], delim:String = ","): String = list match { case head :: tail => tail.foldLeft(head)(_ + delim + _) case Nil => "" }
Odpowiedzi:
Co powiesz na mkString ?
Istnieje wariant, w którym możesz również określić prefiks i sufiks.
Zobacz tutaj implementację z użyciem foldLeft , która jest znacznie bardziej szczegółowa, ale być może warto spojrzeć ze względu na edukację.
źródło
def mkFoldLeftString[A](list:List[String], delim:String = ","): String = list match { case head :: tail => tail.foldLeft(head)(_ + delim + _) case Nil => "" }