无形记录:更新不同类型的字段
Shapeless record: update a field with different type
是否可以更新具有不同类型的 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
是[=16=的原始类型"pointed" ] 并且 B
是您要将其转换为的类型。因此,由于 'field2
的原始值为 2,您也可以通过这种方式完成转换:
l1.updateWith('field2)(_.toString)
是否可以更新具有不同类型的 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
是[=16=的原始类型"pointed" ] 并且 B
是您要将其转换为的类型。因此,由于 'field2
的原始值为 2,您也可以通过这种方式完成转换:
l1.updateWith('field2)(_.toString)