值型別和引用型別只在之前的面試過程中碰到過,最近學習過程中,在體驗 swift 的物件導向特性的時候,在 struct 和 class 中再次碰到了這個問題,說一說自己的收穫吧。
值型別和引用型別在 oc 裡面理解起來應該更方便。在 oc 中,我們例項化物件的時候有兩種方式。一種是需要在變數名前面加個*(指標),一種是直接進行生命。第一種是引用物件,第二種是值型別。從宣告方式我們也就知道了值型別和引用了型別的區別:值型別在賦值或者函式傳遞引數的時候,是建立了乙個copy,副本傳過去,函式在呼叫的過程中並不會影響原始資料;引用型別則是利用指標將資料本身傳遞過去了,所以會影響原資料。
值型別包括:整型、浮點型、布林型、字串、元組、集合和列舉。
引用型別包括:類!類!類!(重要的事情要說三遍)
這裡**會在圖中所示處報錯,錯誤的意思是你不能給 dept.name賦值,也就是由於 dept 是結構體,是值型別,所以即使函式在這裡改變了name 值,也並不會改變結構體中的 name 的值,那怎麼操作呢,這裡需要用到 swift 形參的一種傳遞方法 in-out 傳參。利用 inout 關鍵字定義乙個 in-out 形參,這裡函式會改變這個值,形成乙個副本,並且用這個副本去替換原來的變數。
reference:swift 開發指南 關東昇 2014 人民郵電出版社
Swift值型別和引用型別
的乙份,比如結構體 struct 列舉 enum 元組 tuple 都是值型別。第二種是引用型別,該型別的例項共享資料唯一的乙份副本 在native層面說的話,就是該型別的每個例項都指向記憶體中的同乙個位址 比如類 class 就是引用型別。在這篇文章中,我們將深入 值型別和引用型別的使用價值,以及...
Swift 值型別和引用型別
swift中有兩種型別 值型別 value type 引用型別 reference type 在swift中,所有的基本型別 整型 int 浮點型 float 布林型別 boolean 字串型別 string 陣列 array 字典 dictionary 元組 tuple 都是值型別,它們的底層都是...
swift 值型別和引用型別
值型別被賦予給乙個變數,常數或者本身被傳遞給乙個函式的時候,實際上操作的是其的拷貝。在 swift 中,所有的基本型別 整數 integer 浮點數 floating point 布林值 booleans 字串 string 陣列 array 和字典 dictionaries 都是值型別,並且都是以...