Swift基本語法

2021-07-09 17:16:28 字數 3681 閱讀 1248

var 宣告變數

let 宣告常量

var myvariable = 42 賦值的型別必須與初始化一樣

let myvariable :double = 0.1

let label = "like"

let width = 94.5

let widthlabel = label + string(width)

let sumstr = "sum is \(myvariable + width)";

\()把結果轉換成字串

字典/陣列

var myarray = ["a","b","c"]

var mydic = ["key1":"value1"]

獲取值var arrvalue = myvalue[1]

var dicvalue = mydic["key1"]

建立空陣列和空字典

var emptyarray = string()

var emptydic   = dictionary()

如果型別資訊可以被推斷出來,那麼就可以用和[:]來建立陣列和空字典

條件語句中,條件的()可以省略,但是{}必須留下

在if語句中條件必須是bool型別的表示式

if 2{}//錯誤

控制流語句

for in迴圈語句

for score in scorearray{}

可以使用if 和let來使用缺值得情況,有些變數的值是可選的,乙個可選的值可能是乙個具體的值或者是nil。在型別後面加乙個?標記變數,表示這個變數是可選的。

var optionname:string? = "swift"

if let name = optionname

如果optionname的可選值是nil,條件會判斷為false,不會把值賦給let後面的常量

switch後面的判斷條件支援任意型別的資料以及各種比較操作。當switch匹配到子句後,就會跳出,不會繼續執行下去

可以使用for in 來遍歷字典

for (key,value) in mydic{}

for迴圈中,你可以使用..來表示範圍,也可以使用傳統的寫法,兩者等價

for i in 1..3{}

不包括上界

如果想要包括上界使用...

函式使用func來定義乙個函式

func testfun()//無參,無返回值

func testfun(name:string) ->string//有引數,有返回值

testfun("xiaoming")

使用乙個元組返回多個值

func testtuple() -> (double,int,string)

函式的引數是可變的情況,用陣列來獲取他們

func variablefun (numvbers:int...)

return sum;

}variablefun

(1,2,3)

函式可以巢狀,被巢狀的函式可以訪問外側函式的變數,你可以使用巢狀函式來重構乙個太長或者太複雜的函式

func funinfun() -> int

add()

return y

}函式可以當做引數傳給另乙個函式

func funvariable(list:int,condition:int ->bool) ->bool

}return false

}函式是一等公民,意味著函式可以作為乙個函式的返回值

func backvariable() ->(int ->int )

return add(1)}閉包

函式其實是一種特俗的閉包,你可以使用{}來建立乙個匿名的閉包

閉包是一種功能性自包含模組,可以在**中被傳遞和使用,swift的閉包和c語言oc語言的block**以及其他語言的lambdas比較相似

閉包可以捕獲和儲存所在上下文中任意常量和變數的引用。這就是所謂的閉合幷包裹這些常量和變數。swift會為您管理在捕獲過程中設計到的記憶體操作

閉包採用如下三種方式之一:

1、全域性函式是乙個有名字但是不會捕獲任何值的閉包

2、巢狀函式是乙個有名字並且可以捕獲其封閉函式域內值得閉包

3、閉包表示式是乙個利用輕量級語法所寫的可以捕獲其上下文中變數或常量值的沒有名字的閉包

swift的閉包表示式擁有簡介的風格,並鼓勵在常見場景下以實現語法優化,主要優化如下:

1、利用上下文推斷引數和返回值型別

2、單表示式閉包可以省略return關鍵字

4、引數名稱簡寫

5、trailing閉包語法

閉包表示式

閉包表示式的一般語法如下:

in表示閉包的引數和返回值型別定義已經完成,閉包的函式體即將開始。

閉包表示式的語法可以提供常量、變數和inout作為引數,但是不提供預設值。也可以在引數列表的最後使用可變引數。元組也可以.作為引數和返回值

例子:reversed = sort(name,)

以上閉包的引數型別和返回值型別都可以被推斷出來,所以可以省略

reversed = sort(name,)

實際上,通過內聯閉包表示式構造的閉包作為引數傳遞給函式時,都可以推斷出閉包的引數和返回值的型別,這意味著幾乎不需要利用完整格式來構造任何內聯閉包

單行表示式閉包可以省略return隱式返回單行表示式的結果

reversed = sort(name,)

引數名簡寫

swift自動為內聯函式提供了函式名簡寫的功能,你可以直接通過$0,$1等名稱來引用閉包引數的值。

如果在閉包表示式中使用引數名稱簡寫,可以在閉包引數列表中省略對其的定義,對應型別會·通過函式的型別進行推斷,in也可以省略,因為此時的比表表示式直接由閉包函式體構成

reversed = sort(name,)

運算子函式

swift的string型別定義了關於》的字串實現,這正好與sort的第二個引數吻合。因此可以只傳遞乙個》,swift可以自動判斷

reversed = sort(name,>)

trailing閉包

如果你想要將乙個很長的閉包表示式作為函式的最後乙個引數,可以使用trailing閉包來增強函式的可讀性

func somefun(coluser:()->())

//不使用trailing閉包的情況下進行函式呼叫

somefun()

//使用trailing閉包進行函式呼叫

somefun()

reversed = sort(name)

如果函式只需要閉包表示式乙個引數,那麼可以把()省略。

array的map方法,是將陣列中的每乙個元素都呼叫一次閉包函式,並返回元素所對映的值。map方法返回乙個對映後的陣列。map方法只有閉包表示式這個唯一的引數

let digitnames = [

0: "zero", 1: "one", 2: "two", 3: "three", 4: "four",

5: "five", 6: "six", 7: "seven", 8: "eight", 9: "nine"

]let numbers = [16, 58, 510]

var strings = numbers.mapelse

return output }

}字典中下標跟著乙個!,因為字典返回的是乙個可選值,表明即使key不存在也不會查詢失敗。digitnames[value % 10]返回的總是有效的下標,所以!用於強展開在可選下標中的值

swift基本語法

import uikit 1.只有 swift檔案 所有的宣告和實現都在同乙個檔案 並且相關的 都需要寫在 內 2.快捷鍵 option click swift最常用的快捷鍵 沒有之一 檢視物件的描述資訊 3.print 和 oc中的nslog一樣 列印 class viewcontroller u...

Swift基本語法

關鍵字是對編譯器具有特殊意義的預定義保留識別符號。常見的關鍵字有以下4種 對於關鍵字,沒必要全部知道它們的含義,但是 在swift中,關鍵字是區分大小寫的,因此class和class是不同的,當然class不是swift的關鍵字。宣告和初始化變數時,在識別符號的前面加上關鍵字let,就可以把該變數指...

Swift開發教程 Swift的基本語法

下面來介紹swift的基本用法 println hello,world println 你好,世界!定義乙個常量,使用關鍵字 let 在swift中,幾乎對所有的基本資料型別或者是物件型別使用結構體進行了重寫 let haidian 海淀 let haidian string 海淀 在swift中,...