【发布时间】:2011-09-05 18:12:13
【问题描述】:
我正在尝试编写一个通用的fill 方法,以下是我目前想出的:
scala> import collection.generic.{GenericTraversableTemplate => GTT}
import collection.generic.{GenericTraversableTemplate=>GTT}
scala> import collection.generic.{TraversableFactory => TF}
import collection.generic.{TraversableFactory=>TF}
scala> def fill[A, CC[X] <: Traversable[X] with GTT[X, CC]]
| (n: Int)(elem: => A)(tf: TF[CC]) = tf.fill(n)(elem)
fill: [A, CC[X] <: Traversable[X] with scala.collection.generic.GenericTraversab
leTemplate[X,CC]](n: Int)(elem: => A)(tf: scala.collection.generic.TraversableFa
ctory[CC])CC[A]
scala> fill(3)('d')(List)
res42: List[Char] = List(d, d, d)
这适用于除数组之外的所有可遍历集合。如何使此代码与数组一起使用?
【问题讨论】:
-
我也想出了this 替代版本,它适用于数组,但我不喜欢它有两个原因:1. 它需要我提供比我想要的更多的类型注释。 2. 它让我自己编写整个实现,而不是重用集合中的现有方法。
标签: scala collections scala-collections