【问题标题】:Does seq assignment create a new seq copy?seq assignment 是否会创建一个新的 seq 副本?
【发布时间】:2015-08-26 07:57:43
【问题描述】:

给定两个 seq,a 和 b,声明如下:

var
  a = @[1, 2, 3]
  b = @[4, 5, 6]

a = b 会创建一个新的 seq,将所有内容从 b 复制到 a,或者重用 a?我特别有关于 shallowCopy 的问题。我不知道他们在做什么不同。

【问题讨论】:

  • 使用repr可以看到a在赋值后指向了一个新的地址,所以是一个新的副本。但你是对的,在这个例子中,我在获取shallowCopy 时也看到了一个新地址,而且这个新地址不是b 的地址,这可能是人们所期望的。

标签: assign seq shallow-copy nim-lang


【解决方案1】:

简短的回答大多是肯定的。

长答案是序列分配由 procs 处理,出现在 assign module 中,它是系统模块的一部分。您可以在此文件中搜索tySequence 以查看相关代码。

【讨论】:

    猜你喜欢
    • 2019-10-02
    • 2020-05-30
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 2017-12-29
    • 2016-10-24
    相关资源
    最近更新 更多