각 쌍이 (StringField -> Value) 인 Map[String, Any]
에서 개체를 만들 수 있습니까? 예를 들어매개 변수의 매핑이있는 개체 구성 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) //?
각 쌍이 (StringField -> Value) 인 Map[String, Any]
에서 개체를 만들 수 있습니까? 예를 들어매개 변수의 매핑이있는 개체 구성 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) //?
네, 여러 가지 방법으로 가능합니다. 그 중 하나는 반사를 사용하는 것이고, 다른 하나는 간단한 것을 중간재로 사용하는 것입니다.
예. json4s와 : 그와
(Example.apply _).tupled("a" -> 1)
을하고 Tuple
으로 그 myMap.map
패스에게지도의 각 요소를 알고 : 당신은 함수의 매개 변수 목록으로 튜플을 통과 할 수
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
를 사용하여 다음을 수행 할 수 있습니다.
Map("a" -> 1).map((Example.apply _).tupled).head
매우 c ool. 고맙습니다! – joslinm