que quiero lograr algo como lo siguiente:asignar una sola entrada de un mapa
(_ : Map[K,Int]).mapKey(k, _ + 1)
Y la función mapKey
aplica su segundo argumento (Int => Int
) sólo al valor almacenado en k
. ¿Hay algo dentro de la lib estándar? Si no, apuesto a que hay algo en Scalaz.
Por supuesto que puedo escribir esta función yo mismo (m.updated(k,f(m(k))
) y es muy sencillo hacerlo. Pero he resuelto este problema varias veces, ¿entonces quizás ya está hecho?
Para Scalaz me imagino algo como el siguiente código:
(m: Map[A,B]).project(k: A).map(f: B => B): Map[A,B]
¿Qué desea que suceda si el 'a' llave no está en el mapa? Nada bien? Lo estoy preguntando porque 'updated' insertará' (a -> f (m (a)) '... – huynhjl
@huynhjl Para mi caso de uso, tengo un mapa con un valor predeterminado. Creo que parece más natural no ocurre nada. Tenga en cuenta que mis soluciones simples fallarán con una excepción. – ziggystar