【发布时间】:2021-10-15 13:51:15
【问题描述】:
Shapeless' HListOps 包括许多 useful functions 的异构 HList 类型。我找不到 HMap 的等价物。
这是我的目标。我有一个简单的Map[String, String],它在我的应用程序的很多地方用作消息处理管道中的选项存储库。我现在想通过将其转换为 HMap 来向此地图添加不同的 (Key => Value),因此它可能类似于:
class HOptionsMap[K, V]
implicit val intToString = new HOptionsMap[String, String]
implicit val stringToInt = new HOptionsMap[String, Instant]
所以我可以进一步使用它:
val hm = HMap[HOptionsMap]("placeOfIncident" -> "Toronto", "incidentDate" -> Instant.now)
除了我想在上面调用类似collect, fold, filter 的操作,这些操作不受支持(与HList 不同)。这是为了不破坏当前功能的要求。
当然我可以在这里使用合成,但我很好奇这是否可以通过 Shapeless 库实现。
【问题讨论】: