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.