Я улучшил решение Рекса, используя Builder
метод ++=
. Используйте любую коллекцию, выполняйте над ней любые операции, которые вы хотите выполнить, а затем, наконец, добавьте ее в объект построителя и затем получите ее результат.
scala> def fill[CC[_]](n: Int) = new {
| def apply[A](elem: => A)
| (implicit cbf: CanBuildFrom[Nothing, A, CC[A]]) = {
| val b = cbf.apply
| b ++= Vector.fill(n)(elem)
| b.result
| }
| }
fill: [CC[_]](n: Int)java.lang.Object{def apply[A](elem: => A)(implicit cbf: sca
la.collection.generic.CanBuildFrom[Nothing,A,CC[A]]): CC[A]}
scala> fill[List](3)("hullo")
res8: List[java.lang.String] = List(hullo, hullo, hullo)