我有这个函数将 a转换Array
为 a ParArray
,将线程数作为参数:
def parN[T](collection: Array[T], n: Int) = {
val parCollection = collection.par
parCollection.tasksupport = new ForkJoinTaskSupport(
new concurrent.forkjoin.ForkJoinPool(n))
parCollection
}
现在我想让这个通用,这样它就可以与以下集合一起使用Array
:
def parN[S, T[S] <: Parallelizable[S, ParIterable[S]]](collection: T[S], n: Int) = {
val parCollection = collection.par
parCollection.tasksupport = new ForkJoinTaskSupport(
new concurrent.forkjoin.ForkJoinPool(n))
parCollection
}
但是当我用 调用它时parN(Array(1, 2, 3), 2)
,我得到了这个错误:
inferred type arguments [Int,Array] do not
conform to method parN's type parameter bounds
[S,T[S] <: scala.collection.Parallelizable[S,scala.collection.parallel.ParIterable[S]]]
另一方面,这是有效的:
val x: Parallelizable[Int, ParIterable[Int]] = Array(1, 2, 3)
任何想法我的类型参数可能有什么问题?