【发布时间】:2019-06-19 19:18:43
【问题描述】:
最初我编写了一个方法来解析各种指标的布尔值,并且只对获取true 和false 感兴趣。所以我使用fold 来处理非空选项的值。
def parseMetrics(metricKeys: Seq[String], metricsMap: mutable.Map[String, lang.Boolean],
transactionValue: String): List[String] = {
metricKeys.map { metricKey =>
metricsMap.get(metricKey).fold(StringUtils.EMPTY) { metricValue =>
if (metricValue) "Y" else "N"
}
}.toList
}
现在我决定更改逻辑以使用度量值为空且metricsMap.get(metricKey) 返回无的情况
// 伪代码
val maybeBoolean = metricsMap.get(metricKey)
case Some(maybeBoolean) - evaluate metricValue to "Y" or "N" as before
case None && isValidTransaction(transactionValue) then metricValue = "V"
但我可能遗漏了一些东西,并且在这种情况下模式匹配不起作用。函数isValidTransaction(transactionValue) 无法解析。我尝试匹配 None 并且函数调用失败。
我应该如何修复逻辑以使其正常工作?
【问题讨论】:
标签: scala collections pattern-matching