scala – 如何在运行时枚举无形记录和访问字段键?
发布时间:2020-12-16 19:14:59 所属栏目:安全 来源:网络整理
导读:我正在编写用于处理案例类实例列表的通用代码, 收集每个字段中的值,组合然后将其传递给库. 使用无形的LabelledGeneric和多态函数,它看起来像这样: object toNamedSingletonListOfValues extends Poly1 { implicit def caseField[K,T] = at[FieldType[K,T]](
我正在编写用于处理案例类实例列表的通用代码,
收集每个字段中的值,组合然后将其传递给库. 使用无形的LabelledGeneric和多态函数,它看起来像这样: object toNamedSingletonListOfValues extends Poly1 { implicit def caseField[K,T] = at[FieldType[K,T]](field => { field.key -> List[T](field) }) } val generic = LabelledGeneric[MyClass] val records = listOfMyClassInstances.map(generic.to) val values = records.map(_.map(toNamedSingletonListOfValues)) // Then combining and passing 但是,我需要一种获取field.key的方法,因为库需要参数名称. 你介意建议解决方案吗? 解决方法
您可以通过Witness类型类的实例访问密钥(在编译时已知)作为运行时值:
object toNamedSingletonListOfValues extends Poly1 { implicit def caseField[K,T](implicit wk: Witness.Aux[K]) = at[FieldType[K,T]](field => { wk.value -> List[T](field) }) } 无需运行时反射! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- scala – 如何设置SBT中所有子项目的默认依赖项?
- scala – Play Framework 2.2 – 找不到参数超时的隐含值
- Scala系列中是否有一个Round Robin / Circular Queue可用
- 使用gVim时释放终端
- angularjs – 如何从$stateChangeStart访问UI-Router根状态
- 如何选择一家优质的IDC机房?
- neo4j – Cypher shell无法安装(Ubuntu 16.04)
- 【数据结构】非比较排序的算法实现(包括计数排序、计数排序
- 练习 7:Bash:重定向,stdin,stdout,stderr,<,>,>
- webservice快速入门-使用JAX-WS注解的方式快速搭建ws服务端