是否可以更新具有不同类型的HList记录,因为给定了一个列表:
val l1 = 'field1 ->> 1 :: 'field2 ->> 2 :: HNil
使用其他类型更新field2
不会更新,但会添加新字段:
l1 + ('field2 ->> "2")
//1 :: 2 :: "2" :: HNil
是否可以禁用此行为?
答案 0 :(得分:3)
您可以通过导入记录操作然后使用updateWith
:
import shapeless.record._
l1.updateWith('field2)(_ => "2")
updateWith
的第二部分的功能粗略地说是类型A => B
,其中A
是原始类型"指向" 'field2
和B
是您要将其转换为的类型。因此,由于'field2
的原始值为2,您也可以通过这种方式进行转换:
l1.updateWith('field2)(_.toString)