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 回答
- 0 關注
- 745 瀏覽
添加回答
舉報
0/150
提交
取消