Pra*_*nna 1 scala pattern-matching
我想实现以下内容:
private def msgPrefix(implicit myClass: MyClass, anotherClass: AnotherClass) = {
Option(myClass, anotherClass) match {
case Some(validMyClass, validAnotherClass) => validMyClass.process + validAnotherClass.process
case _ => ""
}
}
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?
我不确定我理解你在寻找什么,但是:
private def msgPrefix(implicit myClass: MyClass, anotherClass: AnotherClass) = {
(Option(myClass), Option(anotherClass)) match {
case (Some(validMyClass), Some(validAnotherClass)) => validMyClass.process + validAnotherClass.process
case _ => ""
}
}
Run Code Online (Sandbox Code Playgroud)
如果两个参数中至少有一个为null,则返回空字符串,即:
scala> msgPrefix(MyClass("foo"),null)
res2: String = ""
scala> msgPrefix(MyClass("foo"),AnotherClass("bar"))
res3: String = foobar
Run Code Online (Sandbox Code Playgroud)
但是你可能应该只改变参数的类型Option[MyClass]和Option[AnotherClass](如果可以的话).