Scala使用List.make报错value make is not a member of object List 求替代方案
List.make是Scala 2.8版本前的旧API,后续版本已从标准库移除,官方替代方案为List.fill方法。
修复后的完整代码
// P15 (**) Duplicate the elements of a list a given number of times. // Example: // scala> duplicateN(3, List('a, 'b, 'c, 'c, 'd)) // res0: List[Symbol] = List('a, 'a, 'a, 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'c', 'c', 'd', 'd', 'd') object P15 { def duplicateN[A](n: Int, ls: List[A]): List[A] = ls flatMap { List.fill(n)(_) } }
List.fill(n)(elem) 接收两个参数,第一个为生成元素的个数,第二个为要重复的元素,功能与原List.make完全一致。
无依赖原生实现(可选)
如果不想依赖fill方法,也可以用区间遍历实现相同逻辑:
def duplicateN[A](n: Int, ls: List[A]): List[A] = ls flatMap { elem => (1 to n).map(_ => elem).toList }
内容的提问来源于stack exchange,提问作者Fernando Gonzalez Sanchez
相关产品推荐
相关产品推荐

