Swift 閱讀記錄一下

因為想破頭了想不出來,所以求助了溫蒂她男友,感謝神一般的男友解惑,所以紀錄一下,免得未來又忘了又想破頭。

先是這一段,

struct 是 value type 這個沒問題,所以names1 跟names2 是兩個不同的baby

所以:

names1 是 劉德華 &梁朝偉

names2 是張智霖 & 林隆璇

這邊沒有問題。

但是第二段的部分。

我還一度懷疑是不是有什麼錯誤, 還拿來playground 測試一下,確實簡報是正確的,

那就怪了,因為class 本身是reference type 應該兩個都指向同一個baby才對。所以理論上,照程式碼判斷 最後的names1 跟 names2 應該都是一樣的才對啊~可是為什麼!?

names1: 張智霖 & 梁朝偉

names2: 張智霖 & 林隆璇

★★★ 關鍵就在於…. 寫法不同… array 本身是value type

names2[0].name = “張智霖“ 這樣寫確實會把”劉德華“ 改成”張智霖“

但是!!! names2[1] = Baby(name: “林隆璇”) 這個寫法是把array存的物件變成另一個,所以…names1[1] 不會被更改到。而names2[1] 則被改成“林隆璇”

最後執行就變成:

names1: 張智霖 & 梁朝偉

names2: 張智霖 & 林隆璇

(趕快筆記!!!) 感謝神一般的小飛俠。

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.