我使用了一個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
}
有沒有更好的方式來做到這一點?
打我吧,eheh;) –
我知道它過早的優化,抱怨它,但這分配和燒傷一個新的地圖實例。它看起來好多了,但對我來說仍然不太好。 – jfager
是的,這聽起來像過早優化對我,特別是因爲Scala有[特定的實現(http://www.scala-lang.org/api/current/scala/collection/immutable/Map$.html)針對小型地圖喜歡這個。 –