P14 (*) -P15 (**)Duplicate the elements of a list,Duplicate the elements of a list a given number of

来源:互联网 发布:c语言表达式的值 编辑:程序博客网 时间:2024/06/05 18:14
scala> duplicate(List('a, 'b, 'c, 'c, 'd))

res0: List[Symbol] = List('a, 'a, 'b, 'b, 'c, 'c, 'c, 'c, 'd, 'd)

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)

//14def duplicate[A](ls:List[A]):List[A]={  var list:List[A]=Nil  ls.foreach(e=> for(i<-0 to 1){list=list:::List(e)} )  list}//15def duplicateN[A](N:Int,ls:List[A]):List[A]={  var list:List[A]=Nil  ls.foreach(e=> for(i<-0 to N-1){list=list:::List(e)} )  list}def main(args: Array[String])= {  println(duplicate(List('a,'b,'c,'c,'d)))  println(duplicateN(4,List('a,'b,'c,'c,'d)))

参考答案

def duplicate[A](ls: List[A]): List[A] = ls flatMap { e => List(e, e) }
巧妙地使用flatmap的接受处理列表的函数并把结果连接起来 的作用。

def duplicateN[A](n: Int, ls: List[A]): List[A] =    ls flatMap { List.make(n, _) }
make函数已经不支持了,没有找到直接替代的函数



0 0