无形记录:更新不同类型的字段

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)