Первоначально я написал метод для анализа логических значений различных метрик и интересовался только получением 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)
возвращает None
// псевдокод
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 и вызов функции не удалась.
Как мне исправить логику, чтобы она работала правильно?