關(guān)于數(shù)據(jù)類型中值類型、引用類型、location問題的簡化版
2023-02-22 07:18 作者:東風(fēng)草綠 | 我要投稿
如果你不關(guān)心數(shù)據(jù)類型中值類型、引用類型、location問題的分析過程,可以記住以下幾條規(guī),也夠簡單。但在說出這個規(guī)則之前我們先要對問題做一個轉(zhuǎn)化:值類型和引用類型區(qū)別的全部意義,就在于賦值操作時發(fā)生的是值拷貝還是引用拷貝。所以我們只需要考察變量賦值操作就可以了
? ? ? 一個賦值操作:
? ? ?x = a
????其中x是被賦值的變量,在賦值操作符的左側(cè),a是賦值變量,在賦值操作符的右側(cè)。我們的規(guī)則是:
如果x是成員變量,值拷貝,否則:
如果x與y的location相同,引用拷貝,否則:
如果x的location是calldata,出錯;如果x的location不是calldata,值拷貝。
這是完整的邏輯,沒有遺漏的情況。整理出這個規(guī)則的關(guān)鍵在于問題的還原,還原為賦值操作的問題。有時一個問題看上去復(fù)雜,是因為我們的敘述方式干擾了我們自己。
標(biāo)簽: