是否有可能通過Map[String, Any]
創建一個對象,其中每對是(StringField - > Value)?使用參數映射構造一個對象scala
例如,
case class Example(a: String, b: Int)
val obj = new Example(Map('a' -> 'blah', 'b' -> 1)) //?
val orMaybe = Example(Map('a' -> 'blah', 'b' -> 1) //?
是否有可能通過Map[String, Any]
創建一個對象,其中每對是(StringField - > Value)?使用參數映射構造一個對象scala
例如,
case class Example(a: String, b: Int)
val obj = new Example(Map('a' -> 'blah', 'b' -> 1)) //?
val orMaybe = Example(Map('a' -> 'blah', 'b' -> 1) //?
是的,有可能在幾個方面。其中一個將使用反射,另一個(更簡單的)將是使用json作爲中間體。
E.g.與json4s:
import org.json4s._
import org.json4s.native.Serialization
import org.json4s.native.Serialization.{read, write}
scala> implicit val formats = DefaultFormats
formats: org.json4s.DefaultFormats.type = [email protected]
case class Example(a: String, b: Int)
scala> val obj = read[Example](write(Map("a" -> "blah", "b" -> 1)))
obj: Example = Example(blah,1)
scala: val orMaybe = read[Example](write(Map("a" -> "blah", "b" -> 1)))
orMaybe: Example = Example(blah,1)
您可以傳遞一個元組作爲參數列表的功能使用.tupled
:
(Example.apply _).tupled("a" -> 1)
了,並且知道myMap.map
通行證地圖的每個元素作爲Tuple
,你可以做到以下幾點:
Map("a" -> 1).map((Example.apply _).tupled).head
非常ç OOL。謝謝! – joslinm