swift3 0 中inout關鍵字

2021-09-11 14:26:42 字數 1213 閱讀 1632

#swift有兩種引數傳遞方式 #####1.值傳遞 值傳遞的是引數的乙個副本,這樣在呼叫引數的過程中不會影響原始資料。 #####2.指標傳遞 指標傳遞把引數本身引用(記憶體位址)傳遞過去,在呼叫的過程會影響原始資料

在swift眾多資料型別中,只有class是指標傳遞,其餘的如int,float,bool,character,array,set,enum,struct全都是傳遞. 讓值傳遞以指標方式傳遞 有時候我們需要通過乙個函式改變函式外面變數的值(將乙個值型別引數以引用方式傳遞),這時,swift提供的inout關鍵字就可以實現。 ?1:

var value = 50

print(value) // 此時value值為50

func increment(value: inout int, length: int)

increment(value: &value,length: 22)

print(value) // 此時value值為72,成功改變了函式外部變數value的值

複製**

?2:

class circle}}

let circle = circle()

circle.r = 3

print(circle.r)

/// 執行結果:3

func calcalate(r:inout double)

calcalate(r: &circle.r)

print(circle.r)

/// 執行結果:2

複製**

即:宣告函式時,在引數前面用inout修飾,函式內部實現改變外部引數傳入引數時(呼叫函式時),在變數名字前面用&符號修飾表示,表明這個變數在引數內部是可以被改變的(可將改變傳遞到原始資料) ###注意 inout修飾的引數是不能有預設值的,有範圍的引數集合也不能被修飾; 乙個引數一旦被inout修飾,就不能再被var和let修飾了。

1.監測屬性,其實是給儲存屬性上新增的一種監測功能,willset 監測新值,didset 監測舊值 2.如果函式的引數是inout 修飾的,你如果將監測的屬性傳入這個函式的時候,此時會將屬性的值拷貝乙份,在函式結束的時候,將值重新付給屬性,所以函式執行完畢後,會觸發監測函式

Swift3 0 建構函式

viewcontroller.swift import uikit 在swift中,同乙個專案中 同乙個命名空間 所有的類預設都是共享的,不需要引用,可以直接訪問,不需要import 所有物件的屬性 var,也可以直接訪問到 class viewcontroller uiviewcontroller...

Swift3 0 異常錯誤

swift3.0 真的很簡單 swift3.0 資料型別 swift3.0 array swift3.0 字典 swift3.0 可選值 swift3.0 集合 swift3.0 流控制 swift3.0 物件和類 swift3.0 屬性 swift3.0 函式和閉包 swift3.0 初始化和釋放...

Swift3 0 空間命名

swift3.0 真的很簡單 swift3.0 資料型別 swift3.0 array swift3.0 字典 swift3.0 可選值 swift3.0 集合 swift3.0 流控制 swift3.0 物件和類 swift3.0 屬性 swift3.0 函式和閉包 swift3.0 初始化和釋放...