1つのキーが常に存在するが、もう1つのキーと値のペアが動的である2要素のマップを返す変更できないAPIを使用しており、それらをケースクラスにアンパックしようとしています。以下のコードは機能しますが、本当に醜いです:
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
}
これを行うためのより良い方法はありますか?