www us1 pag oficial lists ingreso español brain list scala map type-conversion tuples

list - us1 - www mailchimp com login español



Scala: Lista (2)

Tengo un resultado de consulta de List[(Int,String,Double)] que necesito convertir a un Map[String,String] (para mostrar en una lista de selección html)

Mi solución pirateada es:

val prices = (dao.getPricing flatMap { case(id, label, fee) => Map(id.toString -> (label+" $"+fee)) }).toMap

debe haber una mejor manera de lograr lo mismo ...


¿Qué tal esto?

val prices: Map[String, String] = dao.getPricing.map { case (id, label, fee) => (id.toString -> (label + " $" + fee)) }(collection.breakOut)

El método collection.breakOut proporciona una instancia de CanBuildFrom que garantiza que, incluso si está mapeando desde una List , se reconstruye un Map , gracias a la anotación de tipo, y evita la creación de una colección intermediaria.


Un poco más conciso:

val prices = dao.getPricing.map { case (id, label, fee) => ( id.toString, label+" $"+fee)} toMap

alternativa más corta:

val prices = dao.getPricing.map { p => ( p._1.toString, p._2+" $"+p._3)} toMap