Scala:带泛型的Collect函数

3

假设以下情景

val items = List("a", "b", "c", 1, 2, 3, false, true)
def intItems = items.collect {case i : Int => i}
def stringItems = items.collect {case s : String => s}

有没有一种方法可以创建一个通用函数来处理这个行为?
我尝试了以下代码:
def itemsAs[T]: List[T] = items.collect { case item: T => item } 

但是
itemsAs[Int] 

返回

List[Int]] = List(a, b, c, 1, 2, 3, false, true)

另一种方法是将partial function作为参数提供,但仍然需要重复case i: Int => icase s: String => s。有没有更简洁的方法?谢谢
1个回答

5

这是我采用的方法,但为了使其具有类型并且不允许提供每个参数,我添加了以下 def itemsAs[T <: MyInterface](implicit tag: ClassTag[T]): - Bruno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接