Swift 五 Swift中的那些預設值

2021-09-30 11:24:58 字數 2518 閱讀 4886

在swift語言中,有很多預設值,這裡將常用的總結,歡迎補充。

在函式(方法)中,形參預設是常量,不可以在函式(方法)內部進行修改,這主要是為了防止誤操作,防止在呼叫函式(方法)時改變了實參的值,所以使用常量,如果想在函式內部對實參進行修改,可以使用

var關鍵字進行標識,但是這並沒有結束,在函式(方法)外部,實參仍然未改變。如果想在函式(方法)呼叫結束之後仍然可以使用修改後的值,需要使用

inout

關鍵字進行標識,同時不要使用

對形參進行標識,在呼叫函式(方法)的時候,傳遞的實參,需要使用

"&"進行標識,類似於c、c++中的引用傳遞。

func swap(a: int, b: int)

如上**,會出現編譯錯誤,因為a和b

預設是常量,不可以修改,如果想修改a和b

,可以將**更改如下:

func swap(var a: int, var b: int)

var a = 3

var b = 2

swap(a, b) // a = 3, b = 2

在如上**中,形參a和形參b預設都是常量,如果需要a和b的值在函式內部可變,需要使用var關鍵字進行標識,函式實現兩個整數交換,可是在函式外部,兩個整數還是原值,如果想要修改之後的值可以在函式外部訪問,需要新增inout關鍵字,並將var關鍵字刪除。

func swap(inout a: int, inout b: int)

var a = 3

var b = 2

swap(&a, &b) // a = 2, b = 3

在swift中可以為除了lazy的儲存屬性(stored property)和繼承來的屬性設定屬性觀察器,來觀察屬性值的變化,觀察器有兩種,willset和didset。willset在屬性值被改變之前呼叫,didset在屬性值被改變之後進行呼叫。

注:這裡說的是改變,而不是設定,因為在初始化的時候,是不會呼叫這兩個函式的。並且如果在didset中,修改了屬性值,也不會再次呼叫willset和didset。

屬性觀察器,willset中,即將設定的值預設為n

ewvalue(可以自己設定引數名),didset中,設定之前的值預設為oldvalue

(可以自己設定引數名)。

class stepcounter 

didset

}}let stepcounter = stepcounter() // no output since it is the initialiser, not change the value.

stepcounter.totalsteps = 200 // print both the willset's and didset's output.

在如上的**中,willset設定了新的引數名:newtotalsteps,didset使用預設引數名:oldvalue。

這裡先進行宣告,在swift中,可選型別是和其它型別不一樣的(好像廢話一樣),例如:int和int?是完全不同的型別,如果想使用int?型別的值,需要進行可選繫結或者強制解析(在進行強制解析的時候要確保該可選型別當前有值,否則會產生執行時錯誤),才能得到可選型別真正的值。

class optional

在如上**中,變數a是有預設值nil的,如果想獲得a的值,需要使用如下**。

a = 10

// optional binding.

if let c = a else

let d = a!

在計算屬性中,屬性的setter中,將要設定的新值預設為newvalue。

struct circle 

set}

}

如上**中,沒有設

置引數 名,使用預設的值:newvalue。為了便於理解,可以設定新的引數名。

struct circle 

set(newdiameter)

}}

——————————update 2014.06.30——————————

在swift中,因為構造器在括號前沒有函式名來標識構造器,所以構造器中的引數對構造器很重要,因此swift預設為構造器提供了和內部引數名相同的外部引數名。從而在呼叫的使用也必須使用外部引數名。

struct color 

}let magenta = color(red: 1.0, green: 0.0, blue: 1.0)

// let verygreen = color(0.0, 1.0, 0.0) // will result compile error.

swift 生命週期 Swift 中的指標

題圖來自網際網路 指標是 c c 中乙個很重要的概念,是這些相對低階的語言的靈魂,然而 swift 似乎天生對指標十分不友好,繁瑣的用法讓很多初學者一上來十分摸不著頭腦。本文就簡單談談 swift 中指標的一些用法。為什麼要用指標?其實使用 swift 來做 ios 開發時不會經常與指標打交道,fo...

swift中UIActionSheet的使用

方法1 方法2 例項化時新增 物件,同時注意新增協議 let alertsheet uiactionsheet title alerttitle,delegate self,cancelbuttontitle alertok,destructivebuttontitle alertcancel,ot...

Swift中的協議

equatable協議用於相等的比較,遵守這個協議後必須對 運算子進行過載。struct record equatable func left record,right record bool let recorda record wins 10,losses 5 let recordb recor...