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.

Foi útil?

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
scroll top