Scala:模式匹配多个选项参数

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)

这样做的正确方法是什么?

Mar*_*rth 5

我不确定我理解你在寻找什么,但是:

 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](如果可以的话).