gpt4 book ai didi

scala - Scala 序列的通用函数,如 `Seq` 、 `IndexedSeq` 、 `List`

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

我有一个环绕 Seq.tail 的函数。我希望函数为 List 返回 List,为 IndexedSeqSeq 返回 IndexedSeq > 对于 Seq

目前我使用 asInstanceOf 解决 tail 总是返回 Seq 的问题。

    def skipRoot[S <: Seq[String]](path: S): S = {
assert(path.head.nonEmpty)
path.tail.asInstanceOf[S] // a nicer generic solution?
}

val list: List[String] = skipRoot("a" :: Nil)

我想一定有更好的方法,也许是使用更高种类的类型?

最佳答案

您只使用headtail 方法。两者都在 scala.collection.IterableOps 中声明,那么为什么不使用它呢?

def skipRoot[S <: IterableOps[PathItem]](path: S): S = { ... }

针对 Scala 2.12 的编辑:

试试这个:

skipRoot[S <: GenTraversableLike[String, S]](path: S): S = {...}

关于scala - Scala 序列的通用函数,如 `Seq` 、 `IndexedSeq` 、 `List`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64966843/

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