【发布时间】:2017-09-29 20:52:45
【问题描述】:
是否可以更新具有不同类型的 HList 记录,因为给定一个列表:
val l1 = 'field1 ->> 1 :: 'field2 ->> 2 :: HNil
使用不同类型更新field2 不会更新而是添加一个新字段:
l1 + ('field2 ->> "2")
//1 :: 2 :: "2" :: HNil
是否可以禁用此行为?
【问题讨论】:
是否可以更新具有不同类型的 HList 记录,因为给定一个列表:
val l1 = 'field1 ->> 1 :: 'field2 ->> 2 :: HNil
使用不同类型更新field2 不会更新而是添加一个新字段:
l1 + ('field2 ->> "2")
//1 :: 2 :: "2" :: HNil
是否可以禁用此行为?
【问题讨论】:
你可以通过导入记录操作然后使用updateWith:
import shapeless.record._
l1.updateWith('field2)(_ => "2")
updateWith第二部分的函数,粗略来说是A => B类型,其中A是'field2“指向”的原始类型,B是你要转换的类型它到。因此,由于 'field2 的原始值为 2,您也可以这样进行转换:
l1.updateWith('field2)(_.toString)
【讨论】: