gpt4 book ai didi

scala - 如何访问案例类字段字段的字符串名称中的值

转载 作者:行者123 更新时间:2023-12-04 11:19:24 24 4
gpt4 key购买 nike

我应该如何从表示该字段的给定String值中提取案例类的字段的值。

例如:

case class Person(name: String, age: Int)
val a = Person("test",10)

现在在这里给定字符串 nameage,我想从变量 a中提取值。我该怎么做呢?我知道可以使用反射来完成此操作,但我不确定如何执行?

最佳答案

使用无定型镜片,您可以找到想要的东西。这也将约束条件是,在编译时而不是运行时字段实际上存在于case类上:

import shapeless._

case class Person(name: String, age: Int)

val nameLens = lens[Person] >> 'name
val p = Person("myName", 25)

nameLens.get(p)

产量:
res0: String = myName

如果尝试提取不存在的字段,则会出现编译时错误,这是一个更有力的保证:
import shapeless._

case class Person(name: String, age: Int)

val nonExistingLens = lens[Person] >> 'bla
val p = Person("myName", 25)

nonExistingLens.get(p)

编译器大喊:
Error:(5, 44) could not find implicit value for parameter mkLens: shapeless.MkFieldLens[Person,Symbol with shapeless.tag.Tagged[String("bla")]]
val nonExistingLens = lens[Person] >> 'bla

关于scala - 如何访问案例类字段字段的字符串名称中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45547860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com