Причина, по которой вы получаете Product with Serializable
, заключается в том, что ваш код пытается вернуть либо String
(если ключ в порядке), либо Option
(т.е. None
, если ключ не найден).Эти два типа не совместимы.Вы должны решить, хотите ли вы String
(возможно, пустую строку, если ключ не найден) или Option
(т.е. Some[String]
или None
).
Проверьте, работает ли этодля тебя.Возвращает Option[String]
.
map.get(key).fold(pm.get(key.toUpperCase))(Some(_))
1-й get()
возвращает Option
.fold()()
разворачивает Option
и либо пытается 2-й get()
со значением key
в верхнем регистре, либо, если 1-й get
вернул значение, значение повторно упаковывается в Option
, так чтотипы совпадают.
Если, с другой стороны, вы хотите вернуть String
, вы можете сделать это.
map.getOrElse(key, pm.getOrElse(key.toUpperCase, ""))