, Map, . - :
implicit class MapExt[A, B](m: Map[A, B]) {
def withValueIf(condition: => Boolean)(kv: (A, Any)): Map[A, Any] =
if(condition) m + kv else m
}
:
val b = -2
val c = "abc"
Map("A" -> 1)
.withValueIf(b > -1)("B" -> b)
.withValueIf(c.nonEmpty)("C" -> c)
res28: Map[String,Any] = Map(A -> 1, C -> abc)
-, kv: (A, Any) kv: Map[A, Any] m + kv m ++ kv. , if(condition) m + kv else m .
- , Any, :
implicit class MapExt[A, B](m: Map[A, B]) {
def withValueIf[C <: B](condition: => Boolean)(kv: (A, C)): Map[A, B] =
if(condition) m + kv else m
}
scala> Map("a" -> 1).withValueIf(b < 0)("B" -> b).withValueIf(c.nonEmpty)("C" -> -1)
res30: Map[String,Int] = Map(a -> 1, B -> -2, C -> -1)
implicits, if/else , .
def cMap[A, B](condition: => Boolean)(m: Map[A, B]): Map[A, B] =
if(condition) m else Map.empty
Map("A" -> 1) ++
cMap(b > -1)(Map("B" -> b)) ++
cMap(c.nonEmpty)(Map("C" -> c))