lista - scala: convierte la declaración de coincidencia en un patrón que coincida con la función anónima-con valores
recorrer lista scala (1)
No puede usar el comodín _
aquí, su propósito es indicar que no le importa el valor con el que se compara.
Puede utilizar un parámetro con nombre:
keys.foreach {
case `matchMe` => somethingSpecial(matchMe)
case nonSpecialKey => somethingNormal(nonSpecialKey, calcWith(nonSpecialKey))
}
Sin ninguna restricción impuesta, coincidirá con cualquier valor. Tenga en cuenta que el orden de los case
s es importante, ya que el case x => ...
coincide con cualquier cosa y esencialmente abrevia las declaraciones de otros case
.
Dejando de lado, no creo que tu somethingSpecial(_)
haga lo que quieres / espera que haga. Es solo una versión corta de x => somethingSpecial(x)
, no somethingSpecial(matchMe)
.
una pregunta similar: convierta la declaración de coincidencia a una función parcial cuando se usa foreach . Ahora de manera similar, IntelliJ me pide que mejore mi código. La diferencia es que yo uso valores para la coincidencia:
val matchMe = "Foo"
keys.foreach(key =>
key match {
case `matchMe` => somethingSpecial()
case _ => somethingNormal(key, calcWith(key))
})
Refactorizar esto a una función anónima de coincidencia de patrones sería algo así como:
keys.foreach {
case `matchMe` => somethingSpecial(_)
case _ => somethingNormal(_, calcWith(_)) //this doesn''t work
}
Tenga en cuenta que en el segundo caso, no puedo usar _
porque lo necesito dos veces. ¿Hay alguna forma de usar una función anónima de coincidencia de patrones aquí?