R中的copy-on-modify语义到底是什么,以及规范源在哪里?每隔一段时间我就会遇到R具有复制修改语义的概念,例如在Hadley的devtools wiki中。大多数R对象具有复制修改语义,因此修改函数参数不会更改原始值我可以将这个术语追溯到R-Help邮件列表。例如,Peter Dalgaard在2003年7月写道:R是一种函数式语言,具有惰性求值和弱动态类型(变量可以随意更改类型:a < - 1; a < - “a”是允许的)。从语义上讲,一切都是复制修改,尽管在实现中使用了一些优化技巧来避免最严重的低效率。同样,Peter Dalgaard在2004年1月写道:R具有复制修改语义(原则上,有时在实践中),因此一旦对象的一部分发生变化,您可能必须在新的位置查找包含它的任何内容,包括可能的对象本身。更进一步,2000年2月, Ross Ihaka说:我们付出了相当多的努力来实现这一目标。我会将语义描述为“复制修改(如有必要)”。仅在修改对象时才进行复制。(如果需要)部分意味着如果我们可以证明修改不能改变任何非局部变量,那么我们就可以继续修改而不需要复制。它不在手册中无论我搜索多么努力,我都无法在R手册中找到“复制修改”的参考,无论是在R语言定义还是在R Internals中题我的问题有两个部分:这在哪里正式记录?复制修改如何工作?例如,谈论“传递引用”是否合适,因为承诺传递给函数?
2 回答
- 2 回答
- 0 关注
- 685 浏览
添加回答
举报
0/150
提交
取消