【问题标题】:Shapeless record: update a field with different type无形记录:更新不同类型的字段
【发布时间】:2017-09-29 20:52:45
【问题描述】:

是否可以更新具有不同类型的 HList 记录,因为给定一个列表:

val l1 = 'field1 ->> 1 :: 'field2 ->> 2 :: HNil

使用不同类型更新field2 不会更新而是添加一个新字段:

l1 + ('field2 ->> "2")
//1 :: 2 :: "2" :: HNil

是否可以禁用此行为?

【问题讨论】:

    标签: scala shapeless


    【解决方案1】:

    你可以通过导入记录操作然后使用updateWith

    import shapeless.record._
    
    l1.updateWith('field2)(_ => "2")
    

    updateWith第二部分的函数,粗略来说是A => B类型,其中A'field2“指向”的原始类型,B是你要转换的类型它到。因此,由于 'field2 的原始值为 2,您也可以这样进行转换:

    l1.updateWith('field2)(_.toString)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2018-11-11
      • 2012-10-31
      • 1970-01-01
      • 1970-01-01
      • 2020-05-27
      • 2013-03-20
      相关资源
      最近更新 更多