我正在寻找一种基于函数评估结果而不是val类型进行模式匹配的方法。例如,
def f1(x:String):Boolean = if (x contains ("Helllo")) true else false
val caller="Hello"
caller match
{
case f1(caller) => println ("caller said hello")
case _ => println ("caller did not say hello")
}
任何想法?
答案 0 :(得分:2)
你想使用图案防护:
caller match
{
case x if f1(x) => println ("caller said hello")
case _ => println ("caller did not say hello")
}
答案 1 :(得分:0)
我宁愿在没有后卫的情况下这样做,那会更快更清洁:
f1(caller) match {
case true => ....
case false => ....
}
但是对于Boolean
更好地使用if / else表达式,这在字节代码中会更干净并且更快一点