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

标签 scala pattern-matching

我想实现如下目标:

  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/

相关文章:

Scala:带有私有(private) setter 的公共(public) getter ?

javascript - 无效的正则表达式错误

java - 检查字符串是否以某种模式结束

scala - 运行 Spark 应用程序时获取 java.lang.ClassNotFoundException

java - 在 Java/scala 中将日期时间转换为纪元时间损失一小时

scala - 在 ScalaCheck 中生成任意 Function1

scala - 如何使用匹配类型列表中的模式匹配结果?

image-processing - 如何对单个图像执行分水岭分割和 Blob 分析?

image-processing - 有没有可以训练新符号的 OCR?

list - 函数式编程中的计数器