加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Scala中将元素从一个列表复制到另一个列表

发布时间:2020-12-16 18:25:30 所属栏目:安全 来源:网络整理
导读:我想在 Scala中创建通用(不变)方法,该方法将元素从源列表复制到目标列表.在 Java中,java.util.Collections中有copy方法(参见 http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#copy%28java.util.List,%20java.util.List%29).我知道
我想在 Scala中创建通用(不变)方法,该方法将元素从源列表复制到目标列表.在 Java中,java.util.Collections中有copy方法(参见 http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#copy%28java.util.List,%20java.util.List%29).我知道在Scala List中是不可变对象所以我想创建并返回新列表.

我写了以下代码:

def copy[T](dest:List[T],src:List[T]):List[T] = {
    if(dest.length<src.length) throw new Exception("IndexOutOfBoundsException")
    else if(src==Nil) dest
    else {
        var ret = dest
        ret = dest.updated(0,src.first)
        var i=1
        val f:(T=>Unit) = a => {
            if(i<src.length) ret=ret.updated(i,src(i))
            i+=1
            ()
        }
        dest.foreach(f)
        ret
    } 
}

但我认为它可以写得更好.你能帮我写出更好的代码吗?提前致谢.

编辑:也许我表达不清楚我想做什么.我有两个列表(scala.collection.immutable.List),例如src(length = x)和dest(length = y> = x).我想用src列表中的元素替换dest列表的前x个元素.

解决方法

如果您想获得更新列表,可以使用列表中的地图.映射通过将函数应用于列表中的每个元素并返回更新列表来工作.

http://www.brunton-spall.co.uk/post/2011/12/02/map-map-and-flatmap-in-scala/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读