首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >变换/遍历Shapeless‘HMap

变换/遍历Shapeless‘HMap
EN

Stack Overflow用户
提问于 2021-10-15 13:51:16
回答 1查看 67关注 0票数 2

Shapeless‘HListOps包括许多用于异构HList类型的useful functions。我找不到HMap的等价物。

这是我的目标。我有一个简单的Map[String, String],它在我的应用程序的许多地方用作消息处理管道中的选项存储库。现在,我想通过将其转换为HMap,向此映射添加一个不同的(Key => Value),因此它可能类似于:

代码语言:javascript
复制
class HOptionsMap[K, V]
implicit val intToString = new HOptionsMap[String, String]
implicit val stringToInt = new HOptionsMap[String, Instant]

所以我可以进一步使用它,如下所示:

代码语言:javascript
复制
val hm = HMap[HOptionsMap]("placeOfIncident" -> "Toronto", "incidentDate" -> Instant.now)

除了我想在上面调用像collect, fold, filter这样的操作,这是不受支持的(与HList不同)。为了不破坏当前的功能,这是一个要求。

当然,我可以在这里使用组合,但我很好奇这是否可以使用Shapeless库来实现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-16 14:25:40

如果HMap对于您的用例来说是一种不方便的抽象,请尝试使用记录

代码语言:javascript
复制
import shapeless.syntax.singleton._

val hm = "placeOfIncident" ->> "Toronto" :: "incidentDate" ->> Instant.now :: HNil

您可以将其作为任何HList/记录进行收集、折叠、过滤。

https://github.com/milessabin/shapeless/wiki/Feature-overview:-shapeless-2.0.0#extensible-records

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69585806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档