【问题标题】:Getter on nested case class嵌套案例类的吸气剂
【发布时间】:2018-10-26 12:59:03
【问题描述】:

我想获取嵌套案例类的值,在这个嵌套案例类中给出“路径”。

例如,给予:

case class Address(street : String, city : String, postcode : String)
// Nested case class
case class Person(name : String, age : Int, address : Address)

val person = Person("Joe Grey", 37, Address("Southover Street", "Brighton", "BN2 9UA"))

val path = "address_street" // _ is arbitrary separator

我希望 getter(path) 返回“Southover Street”。

我尝试用无形的镜片做不同的事情,比如

val steetLens = lens[Person] >> Witness(Symbol("address")) >> Witness(Symbol("street"))
println(steetLens.get(person))

返回正确的东西,但我不能以通用方式使用它,因为像这样:

 val steetLens = lens[Person] >> addressField >> streetField

没用..

据我了解,我们无法从通用字符串创建 Symbol

【问题讨论】:

标签: scala shapeless


【解决方案1】:

你可以使用标准的镜头组成吗?

val address: Lens[Person, Address] = lens[Person].address
val street: Lens[Address, String] = lens[Address].street
val addressStreet: Lens[Person, String] = street compose address
addressStreet.get(person) // Southover Street

【讨论】:

  • 这个想法是这样的,但我想使用字符串来访问镜头中的对象,比如:lens[Person]("address") 或类似的东西
猜你喜欢
  • 2018-04-05
  • 2018-11-16
  • 2018-10-13
  • 2020-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-05
相关资源
最近更新 更多