我正在使用一个我无法更改的 api,它返回一个 2 元素映射,其中一个键始终存在,但另一个键/值对是动态的,我试图将它们解压缩到一个案例类中。下面的代码有效,但真的很难看:
case class Foo(name: String, key: String, value: String)
def fooFromMap(item: Map[String, String]): Option[Foo] = {
var name: String = null
var key: String = null
var value: String = null
item.foreach {
case ("name", v) => name = v
case (k, v) => key = k; value = v
}
if(name != null && key != null && value != null) Some(Foo(name, key, value))
else None
}
有没有更好的方法来做到这一点?