我想实现如下目标:
private def msgPrefix(implicit myClass: MyClass, anotherClass: AnotherClass) = {
Option(myClass, anotherClass) match {
case Some(validMyClass, validAnotherClass) => validMyClass.process + validAnotherClass.process
case _ => ""
}
}
正确的做法是什么?
最佳答案
我不确定我是否理解您要查找的内容,但是:
private def msgPrefix(implicit myClass: MyClass, anotherClass: AnotherClass) = {
(Option(myClass), Option(anotherClass)) match {
case (Some(validMyClass), Some(validAnotherClass)) => validMyClass.process + validAnotherClass.process
case _ => ""
}
}
如果两个参数中至少有一个为空,这将返回空字符串,即:
scala> msgPrefix(MyClass("foo"),null)
res2: String = ""
scala> msgPrefix(MyClass("foo"),AnotherClass("bar"))
res3: String = foobar
但您可能应该将参数的类型更改为 Option[MyClass]
和 Option[AnotherClass]
(如果可以的话)。
关于Scala:模式匹配多个选项参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20135027/