Python是一門純粹的面向?qū)ο笳Z言?

我之前就在學(xué)習(xí)Python,而Python自己也說了自己是一門純粹的面向?qū)ο笳Z言.包括int類型都是對象.
所謂面向?qū)ο缶褪且妙愋?然而今天看了一篇有關(guān)Swift的有關(guān)struct還是使用class的文章,讓我覺得認(rèn)知上需要小心又謹(jǐn)慎.

文章中這么寫到的:
大部分語言沒有類似 struct 結(jié)構(gòu)體的東西。像 Python 和 JavaScript 這樣“一切皆對象”的語言都只有引用類型。如果你是從這樣的語言轉(zhuǎn)到 Swift,值類型這個概念可能對你來說更加陌生。
不過等一下!有一個地方幾乎所有的語言都會使用值類型:數(shù)值(number)!

然后我迫不及待的就在VSCode中寫下了如下的簡單代碼

x1 = 1
x2 = x1

x1 = x1 + 1

print("x1:{}".format(x1))
print("x2:{}".format(x2))

按照面向?qū)ο蠖际且脤ο筮壿?x1和x2是指向同一個指針,那么x1 + 的變化必然也會影響到x2
根據(jù)這個理論,預(yù)期的打印結(jié)果應(yīng)該是:

x1:2
x2:2

然而實際的結(jié)果是:

x1:2
x2:1

最后文章是這么解釋的:
由于許多語言的核心是“一切皆對象”,number 其實是用引用類型來實現(xiàn)的。然而,它們是不可變引用類型,不可變引用類型和值類型的差異是很難察覺的。它們的行為和值類型一樣,即使它們不是以這種方式實現(xiàn)。

原文如下:
何時用 struct?何時用 class?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容