for comprehension scala yield yield-return

comprehension - for scala



Cadena de rendimiento de la lista (3)

Tengo al: Lista [Char] de caracteres que deseo concatenar y devolver como una cadena en uno para bucle.

Probé esto

val x: String = for(i <- list) yield(i)

llevando a

error: type mismatch; found : List[Char] required: String

Entonces, ¿cómo puedo cambiar el tipo de resultado de rendimiento?

¡Gracias!


Prueba esto:

val x: String = list.mkString

Esta sintaxis:

for (i <- list) yield i

Es azúcar sintáctico para:

list.map(i => i)

y así devolverá una copia sin cambios de su list original.


Puede utilizar cualquiera de las tres sobrecargas de mkString. Básicamente, convierte una colección en una Cadena plana por el método toString de cada elemento. Las sobrecargas agregan separadores personalizados entre cada elemento.

Es un método de Iterable, por lo que también puede usarlo en Mapa o Conjunto.

Consulte http://www.scala-lang.org/api/2.7.2/scala/Iterable.html para obtener más detalles.


Puedes usar lo siguiente:

val x: String = (for(i <- list) yield(i))(collection.breakOut)

Consulte esta pregunta para obtener más información acerca de breakOut.