我有一個關于全域分配的問題。這是一個小例子。我想問為什么第二次全域賦值不影響函式內部?為什么函式運行后回傳的輸出和我在函式外呼叫的不一樣)
謝謝!

uj5u.com熱心網友回復:
這是我的解釋,它非常復雜,但我已盡力而為:
- 在
a_function第一行中,您將 X 分配給了全域環境中的 3 矩陣 - 在你采取的第二行中
X,將每個元素添加 4,然后將其分配給X全域環境(使用<<-),覆寫全域環境中的先前值X。但更有趣的是(并且很難從代碼中看出/不明白),是X函式環境中發生的事情。由于惰性求值,現在是當 RX在函式環境中找到一個值時 - 它會計算 promise,即計算X函式封閉環境中的運算式。我們只是將 3 的矩陣系結到X全域環境中。所以現在X函式環境中的值也是3s的矩陣。 - 這解釋了為什么當您呼叫
a_function(X)它時回傳 3 的矩陣。 - 然后,當
X在全域環境中評估運算式時,它會回傳 7s 的矩陣(因為您在函式中使用 對其進行了全域分配<<-)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/536392.html
標籤:r变量赋值分配赋值运算符
