creo que la primera respuesta de Kim Stebel está cerca de lo que desea. Una 'coincidencia de patrón como tal' no es una entidad aislada en Scala. Una coincidencia puede ser definida como 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") => }
prueba:
bar(Nil)
bar(List("a", "b", "c"))
Como alternativa, utilice composición:
def foo[A, B](x: A)(pattern: PartialFunction[A, B]): Unit = {
val y = pattern andThen { _ => println("match")}
if (y.isDefinedAt(x)) y(x)
}
He jugado un poco con la Scala 2.10 'Try', antes de cambiar su pregunta. Quizás aún te parezca útil: http://stackoverflow.com/questions/11990017/threading-trys-through-for-comprehension –