recorrer lista ejemplos scala pattern-matching

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í?