dictionary - dict 从嵌套字典中获取 dict,在 tcl 中创建一个副本?

标签 dictionary copy tcl

让我们看一下下面的示例代码:

set m [ dict create 1 [ dict create 2 3] 4 [ dict create 5 6 ] ]
set p [ dict get $m 4 ]

现在,问题来了。假设我不对 p 进行任何更改。 TCL 是否正在创建另一个副本,或者 p 只是一个指针?
谢谢。

最佳答案

Tcl 的语义模型具有不可变的值,即,当您查看某个值时,世界其他地方发生的任何事情都不会导致该值发生变化。 (变量可以更改,但这是通过在其中放入不同的值来实现的。)这样做的结果是 Tcl 可以积极地共享对值的引用。这意味着它的集合值(列表和字典)有效地保存了这些引用,而 dict get 操作将简单地复制引用;实际值本身不存在于任何地方,但字典和值都有它的句柄。它看起来就像一个副本,但效率更高。

还有一个额外的细微差别:当变量引用某个值时,对该变量的操作可以直接修改该值,而不必复制。然而,这并不是你能看到的东西,除了它提高了性能。

关于dictionary - dict 从嵌套字典中获取 dict,在 tcl 中创建一个副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41149087/

相关文章:

linux - 如何从 tcl 文件更改用户

java - 将值添加到 List<Map<String, String>>

jquery - 在点击位置移动 map 上的角色

c# - 复制粘贴后台工具

python - 如何使用 Python 调用 TCL 过程

python - tcl 和 Python 的相似之处

dictionary - Mapbox fitBounds,函数边界映射但不渲染图 block

python - 如何在 Python 中初始化不同空列表的字典?

将三个数组复制到 C 中的 2 个暗数组

ios - 在IOS中将字符串添加到数组