首页 > 解决方案 > Scala - 模式匹配 - 构造函数无法实例化为预期类型

问题描述

我得到一个逗号分隔的度量值字符串,然后使用该字符串进行 SQL 查询。

但是,当我尝试进行模式匹配时,这里有一个错误:Some(newMetrics)-option Constructor cannot be instantiated to expected type, found: Some[A], required: String

在这种情况下,使用模式匹配的正确方法是什么?

val metrics: String = props.getProperty(NEW_METRICS).filter(StringUtils.isNotBlank).getOrElse("")

val metricsQuery = metrics match {
  case Some(newMetrics) => s"""SELECT $newMetrics FROM ${metricsTable}"""
  case _ => OLD_TABLE
}

标签: scalaapache-sparkpattern-matching

解决方案


您正在尝试匹配 aString就好像它是Option[String]

通过省略.getOrElse("") metricswill be of type Option[String],您可以像在示例的下部那样匹配它。


推荐阅读