【问题标题】:Scala - pattern matching - Constructor cannot be instantiated to expected typeScala - 模式匹配 - 构造函数无法实例化为预期类型
【发布时间】:2019-12-16 10:46:39
【问题描述】:

我得到一个逗号分隔的度量值字符串,然后使用该字符串进行 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
}

【问题讨论】:

  • 您的指标已经是一个字符串,而不是一个选项。删除getOrElse("") 或将"" 更改为OLD_TABLE

标签: scala apache-spark pattern-matching


【解决方案1】:

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

省略.getOrElse("") metrics 将是Option[String] 类型,您可以像在示例的下部那样匹配它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    相关资源
    最近更新 更多