penso prima risposta di Kim Stebel è vicino a ciò che si desidera. Un 'pattern match as such' non è un'entità isolata in Scala. Una corrispondenza può essere definita come a Function1
o PartialFunction
.
def foo[A, B](x: A)(pattern: PartialFunction[A, B]): Unit =
if(pattern.isDefinedAt(x)) println("match")
def bar(list: List[String]): Unit =
foo(list){ case List("a", "b", "c") => }
prova:
bar(Nil)
bar(List("a", "b", "c"))
usare alternativa composizione:
def foo[A, B](x: A)(pattern: PartialFunction[A, B]): Unit = {
val y = pattern andThen { _ => println("match")}
if (y.isDefinedAt(x)) y(x)
}
fonte
2012-08-16 15:49:30
Ho suonato in giro con la Scala 2.10 del 'Try', prima di cambiare la tua domanda. Forse lo trovi ancora utile: http://stackoverflow.com/questions/11990017/threading-trys-through-for-comprehension –