我想获取嵌套案例类的值,该嵌套案例类在此嵌套案例类中提供“路径”。
例如,给出:
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
。
答案 0 :(得分:0)
您可以使用标准成分的镜片吗?
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