如何定义一个接受Seq [T]和ParSeq [T]作为参数的函数?

时间:2017-03-16 06:15:32

标签: scala parallel-collections

在许多情况下,我希望将相同的filtermap功能应用于SeqParSeq集合。但是我不想两次编写代码。

def fun(data:ParSeq[String], num_start:Int,num_end:Int) = {
    data filter { x=>
      val temp = extract_number(x)
      num_start <= temp && temp <= num_end
    }
  }

与上面的代码一样,对于Seq[String],我需要应用fun,我必须重新编写它,内容完全相同。 我怎么能避免它?

2 个答案:

答案 0 :(得分:5)

试试这个

def fun(data:GenSeq[String], num_start:Int,num_end:Int) = {
    data filter { x=>
      val temp = extract_number(x)
      num_start <= temp && temp <= num_end
    }
  }

GenSeq是traitParSeqSeq

扩展[或实施]

答案 1 :(得分:1)

您可以使用GenSeq[String]

ParSeqSeq都扩展GenSeq,这通常用于根据您传递给它们的集合类型,使用并行或顺序操作的函数。< / p>