假设以下情景
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 => i
和case s: String => s
。有没有更简洁的方法?谢谢
def itemsAs[T <: MyInterface](implicit tag: ClassTag[T]):
。 - Bruno