gpt4 book ai didi

scala - 提供附加参数以映射到 HList

转载 作者:行者123 更新时间:2023-12-04 04:56:09 29 4
gpt4 key购买 nike

我想做这样的事情:

def run(subjects: List[Subject]) = {
val configs = compute()
subjects.map(s => configs.map(c => test(s,c)))
// or flatMap, I don't really care at this point
}

在我的用例中,主题实际上是 Subject[T]我需要一个类型安全版本的 T结果中。所以我有:
def run[L <: HList](subjects: L)(implicit mapper: Mapper[testFun.type, L]) = {
val configs = compute()
subjects.map(testFun)
}

但是,现在我无法将配置传递给 testFun其中,根据 this post , 需要有一个单例类型。

一种选择是:
val cfgHL = HList.fill(subjects.length)(configs)
(subjects zip cfgHL).map(testFun)

但是 HList当前没有 fill操作。任何提示?

最佳答案

您可以使用 mapConst 来完成与 fill 相同的事情。如果我们有以下几点:

val xs = 1 :: 'a :: 'a' :: HNil

我们可以写:
scala> xs.zip(xs mapConst "x") == (1, "x") :: ('a, "x") :: ('a', "x") :: HNil
res0: Boolean = true

请注意,还有其他方法可以解决部分应用(更高等级)多态函数然后使用它们进行映射的问题——例如参见 my answer here 。不过,对于您的用例来说,这样的事情可能有点过头了。

关于scala - 提供附加参数以映射到 HList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16724622/

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