小编Bru*_*uno的帖子

Scala:使用泛型收集

考虑到以下场景

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}
Run Code Online (Sandbox Code Playgroud)

有没有办法创建一个通用函数来处理这种行为?

我尝试了以下方法

def itemsAs[T]: List[T] = items.collect { case item: T => item } 
Run Code Online (Sandbox Code Playgroud)

itemsAs[Int] 
Run Code Online (Sandbox Code Playgroud)

回报

List[Int]] = List(a, b, c, 1, 2, 3, false, true)
Run Code Online (Sandbox Code Playgroud)

另一种方法是提供partial functionas 参数,但仍然必须复制case i: Int => iand case s: String => s。有没有办法让它变得更紧凑?谢谢

generics scala partialfunction

3
推荐指数
1
解决办法
282
查看次数

标签 统计

generics ×1

partialfunction ×1

scala ×1