Como você codifica um bloco de código correspondente de padrões no scala?
-
25-09-2019 - |
Pergunta
Como você codifica uma função que leva um bloco de código como um parâmetro que contém instruções de caso? Por exemplo, no meu bloco de código, não quero fazer uma correspondência ou um caso padrão explicitamente. Estou parecendo algo assim
myApi {
case Whatever() => // code for case 1
case SomethingElse() => // code for case 2
}
E dentro do meu myapi (), ele realmente executará o bloco de código e fará as correspondências.
Solução
Você tem que usar um PartialFunction
por esta.
scala> def patternMatchWithPartialFunction(x: Any)(f: PartialFunction[Any, Unit]) = f(x)
patternMatchWithPartialFunction: (x: Any)(f: PartialFunction[Any,Unit])Unit
scala> patternMatchWithPartialFunction("hello") {
| case s: String => println("Found a string with value: " + s)
| case _ => println("Found something else")
| }
Found a string with value: hello
scala> patternMatchWithPartialFunction(42) {
| case s: String => println("Found a string with value: " + s)
| case _ => println("Found something else")
| }
Found something else
Outras dicas
Isso deve ser suficiente para explicar: Um passeio de Scala: correspondência de padrões
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow