Вы можете сделать это с помощью if-охранник:
def receive: String => Unit = {
case str if str == "test" => println(str)
case _ => println("other")
}
Option("test").map(receive) // prints "test"
Option("foo").map(receive) // prints "other"
Обратите внимание, что если у вас есть объект, который вы хотите обратиться, то такие вещи, как, например, foo: Foo(s)
не будет работать (foo: Foo
будет, но тогда вы потеряете ссылку на значение Foo s
). В этом случае вам необходимо использовать @
оператор:
case class Foo(s: String)
def receive: Foo => Unit = {
case [email protected](s) => println(foo.s) // could've referred to just "s" too
case _ => println("other")
}
Option(Foo("test")).map(receive) // prints "test"