gpt4 book ai didi

Scala从集合中收集类型的项目

转载 作者:行者123 更新时间:2023-12-04 17:47:55 26 4
gpt4 key购买 nike

考虑一个 Array[Any]

val a = Array(1,2,"a")
a: Array[Any] = Array(1, 2, a)

我们可以收集 Int 类型的所有项目像这样,
a.collect { case v: Int => v }
res: Array[Int] = Array(1, 2)

虽然如何定义一个收集给定类型项目的函数,但没有成功尝试过,
def co[T](a: Array[Any]) = a.collect { case v: T => v  }
warning: abstract type pattern T is unchecked since it is eliminated by erasure

提供
co[Int](a)
ArraySeq(1, 2, a)

co[String](a)
ArraySeq(1, 2, a)

最佳答案

您需要提供ClassTag使模式匹配真正起作用:

import scala.reflect.ClassTag

def co[T: ClassTag](a: Array[Any]) = a.collect { case v: T => v }

关于Scala从集合中收集类型的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27400634/

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