gpt4 book ai didi

scala - 给定一个 HList 你如何得到一个 HMap

转载 作者:行者123 更新时间:2023-12-05 08:09:03 24 4
gpt4 key购买 nike

我有一个 HListSymbols。我想将其转换为 HMap 并将 HList 值作为 keys 并将 value 映射设置为生成的基于 key 的对象。生成的对象保持状态,因此虽然可以知道默认映射,但后续状态不是。

最佳答案

嗯...问题是 Shapeless HMap 不像 HList 那样直接,但以下内容可以帮助您入门

import shapeless._
import poly._

val hList = 'omg1 :: 'omg2 :: 'omg3 :: HNil

// lets assume that you want to map Symbols to kv-pairs String -> Int
// hence your HMap will have kv-pairs "omg1" -> 1, "omg2" -> 2...

class BiMapIS[K, V]
implicit val stringToInt = new BiMapIS[String, Int]

object myFoldPolyFunc extends Poly {
implicit def caseSymbol = use(
(hmap: HMap[BiMapIS], elem: Symbol) =>
hmap + (elem.name -> elem.name.last.toString.toInt)
)
}

val hMap = hList.foldLeft(HMap.empty[BiMapIS])(myFoldPolyFunc)

val v1 = hMap.get("omg1")
// Some(1)

val v2 = hMap.get("omg2")
// Some(2)

关于scala - 给定一个 HList 你如何得到一个 HMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42000342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com