gpt4 book ai didi

与常规列表上的 Vanilla "zipped"相对应的 Scala 无形函数?

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

这是一个新问题。

我想做这样的事情:

val a = 1 :: "hi" :: HNil
val b = "foo" :: 2.2 :: HNil
val c = 3 :: 4 :: HNil

val d = (a, b, c).zip // Like "zipped" on tuples of regular lists.

在上面, d应该具有以下值(value):

(1, "foo", 3) :: ("hi", 2.2, 4) :: HNil

有没有干净的方法来做到这一点?

最佳答案

您需要将元组转换为 HList首先。在 1.2.x 中:

import shapeless._, Tuples._

val a = 1 :: "hi" :: HNil
val b = "foo" :: 2.2 :: HNil
val c = 3 :: 4 :: HNil

(a, b, c).hlisted.zipped

在 2.0.0 中,您有更多选择:
import shapeless._, syntax.std.tuple._

val a = 1 :: "hi" :: HNil
val b = "foo" :: 2.2 :: HNil
val c = 3 :: 4 :: HNil

(a, b, c).productElements.zip

或者:
import shapeless._, syntax.std.tuple._

val a = (1, "hi")
val b = ("foo", 2.2)
val c = (3, 4)

(a, b, c).zip

最后一个将返回一个由 3 元组组成的元组,这可能适合您,也可能不适合您。

关于与常规列表上的 Vanilla "zipped"相对应的 Scala 无形函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19572579/

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