自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Swift基礎(chǔ)語法學習總結(jié)

移動開發(fā) iOS
本篇文章主要對Swift的基礎(chǔ)語法做了非常詳細的總結(jié),包括:變量,類型,字符串,數(shù)組,字典,Set,Switch語句……

1.基礎(chǔ)

1.1) swift還是使用// 和/* */ 來注釋,并且/* */允許多行注釋.

1.2) swift使用print和println打印,它的傳參是一個泛型,幾乎所有類型都是可打印的.

1.3) swift在語句后面加分號與否都是正確的,但是swift偏好的風格是不在結(jié)尾處加分號的.如果有多個語句,必須用分號隔開.

1.4) 在一個數(shù)字中庸下劃線(_)會被忽視,方便認出大數(shù)值的的數(shù)字,也可以在前面補零.

1.5) swift不允許在不同種類型間做加減乘除,要先做類型轉(zhuǎn)換或運算符重載.

1.6) typealias 可以為一個類型指定另外一個名字,這樣可以清晰的表達類型的意義.typealias newType = OldTypeName

1.7) assert 斷言表示自己拋出異常,assert ***個參數(shù)表示 通過而不拋異常的條件,第二個參數(shù)表示提示,第二個參數(shù)可以沒有

1.8) swift中的 = 賦值運算符沒有返回值,所以不會犯 if a = 3 {}這樣的錯誤了,運算符前后加空格,以免xcode不能識別

2.變量

 2.1) let 定義常量,var 定義變量,let定義的必須在聲明時指定初始值,普通的var聲明也必須賦初始值.

2.2) let 聲明的變量不可再改變,而var變量可以再改變,但是你不能再聲明一個已經(jīng)聲明的常量或變量.

2.3) 可以在一行同時聲明多個常量或變量,用逗號隔開;如果每個常量對應(yīng)一個var或let只需要用分號隔開即可.

2.4) 每個常量和變量都一定會有固定的類型,如果沒有指定類型,swift會根據(jù)后面的賦值類型來推斷.

2.5) swift的命名不能使用保留字和箭頭/開頭不能用數(shù)字,沒有其它任何規(guī)定,甚至都可以使用小狗小貓命名.

2.6) 如果你想使用關(guān)鍵字來命名是不允許的,但是你可以在前后加上``來命名,比如`let`,非關(guān)鍵字加``命名也可以的.

2.7) swift里可以聲明元組,類型類似于(Int, String),你可以用var聲明也可以用let聲明,里面兩個都會是變量或者常量

2.8) 而元組的方式和直接分開聲明兩個變量和常量沒多大區(qū)別,你可以把其中的變量拿出來單獨用或當元組用,混合用也可以.

2.9) 可以用元組名直接通過下標索引直接來訪問元組里對應(yīng)的值,比如aaa.0 aaa.1

2.10) 你可以在元組中跟元素命名,比如(code:404,message:"Not Found"),然后你就可以用aaa.code 和 aaa.message來訪問

3.類型

3.1) int型的UInt8和Int32 都可以通過min和max來取***值和最小值

3.2) Double是64位浮點數(shù),Float是32位浮點數(shù),對小數(shù)自動推斷是Double類型,除非是指定過類型的

3.3) 可以跟指定為浮點類型的常量或變量賦一個整數(shù)值但是不能是整數(shù)變量,它會自動轉(zhuǎn)換成浮點數(shù).

3.4) 顯示指定類型的變量或常量不能跟它賦值一個不同類型的值,它不能做自動轉(zhuǎn)換,除了跟浮點類型賦值一個整數(shù)數(shù)值

3.5) 在指定類型后加一個?表示可選類型,它的意思是它可能為沒有值為nil,然后你可以通過可選綁定或者判斷是否為空來使用它.

3.6) 如果是一個class的可選類型,你可以通過?.訪問它的屬性和方法,它是通過前者是否會相應(yīng)后面的方法,如果能響應(yīng)則執(zhí)行,不能則返回nil

3.7) ?其實是個語法糖,比如String?類型等價于Optional<String>類型,只是方便寫而已,他和String類型本質(zhì)是不同的

3.8) 如果你不想用判斷是否為空或者用可選綁定或者用.?來訪問它,你可以用最直接最簡單的!強制解包來使用,但前提是能保證非空

3.9) 如果一個可選量沒有值又強制解包會報錯,一個可選類型會隱式賦值為nil,你也可以在使用中賦值為nil

3.10) 之所以需要有可選類型是因為swift是類型絕對安全的語言,它需要你在使用變量時一定有值,但是這種可選類型太麻煩,所以產(chǎn)生了!類型,!類型本質(zhì)應(yīng)該就是可選類型

3.11) 聲明為!可選類型,也可以不做初始化,它相當于你在每次使用可選類型的時候加上了!進行強制解包,你就不需要再自己加!了,你需要自己保證它不為空,否則使用會出錯

4.字符串

4.1) ... 表示閉區(qū)間/ ..< 表示開區(qū)間, == 表示值相等/=== 表示引用相同, + 可以直接加字符串或數(shù)組

4.2) swift中的string是值類型,它在做常量變量賦值或函數(shù)中進行傳遞時都會做值拷貝,都是一個新的副本,swift只有在必要的情況下做拷貝

4.3) 可以用for in 遍歷字符串,用 count全局函數(shù)計算字符數(shù),用isEmpty屬性判斷是否是空字符串,有hasPrefix判斷前綴(后綴等)

4.4) 可以用startIndex和endIndex獲取開始和結(jié)束下標,用數(shù)組和下標的形式訪問單個字符;還可以通過\()的方式生成字符串

5.數(shù)組

5.1) swift中的數(shù)組可以用[String]和Array<String>來聲明,它們是同一個意思,賦值也直接用中括號[]表示就可以了,里面的值需要是同一個類型

5.2) array 有count/isEmpty等屬性,有append/insert/remove等方法,它可以直接 + 一個數(shù)組,它可以通過下標和下標區(qū)間來取值,區(qū)間取到的是一個數(shù)組

5.3) for item in shoppingList / for (index, value) in enumerate(shoppingList) 兩種遍歷方式,后面一種會知道下標

5.4) 可以通過[Double](count: 3, repeatedValue: 3.3) / Array(count: 3, repeatedValue: 2.5) 初始化一個數(shù)組

5.5) 數(shù)組也是值傳遞,如果把數(shù)組a賦值給數(shù)組b,a和b就是兩份拷貝,修改相互不會有影響

6.字典

6.1) 字典是通過 [String : String] / Dictionary<String, String> 聲明的,形式也是用[a:b,c:d]這種形式,通過鍵訪問值

6.2) 可以直接通過a[b] = c 這種方式增加一個鍵值對,通過updateValue和removeValueForKey來增加刪除鍵值對

6.3) 可以用for (airportCode, airportName) in airports / for airportCode in airports.keys 遍歷鍵值對或鍵或值

6.4) 可以直接賦值 [:] 來清空字典,鍵值是可以為Int的;和string,array一樣,dictionary也是值拷貝

7.Set

7.1) 用Set<Int> 聲明Set,和數(shù)組一模一樣跟它賦值,也可以通過賦值[]清除,也必須是同一類型,也有insert/contains方法,isEmpty屬性

7.2) Set也有for in 遍歷,有取兩個集合的差交等做做排列的方法,也有判斷子集超集等方法

8.For循環(huán)

 8.1) for index in 1...5 的這個index只是在當前這個循環(huán)的作用域內(nèi),如果for循環(huán)外面也有一個index,隨便修改也不會和它又什么影響

8.2) for _ in 1...10 如果不需要循環(huán)的這個索引可以用下劃線_代替,在swift中只要不需要那個值的一般都可以用_代替

8.3) for var index = 0; index < 3; ++index 這種for循環(huán)也還是可以的

9.Switch語句

9.1) swift 中的switch必須窮舉所有的可能,否則必須加default,窮舉的時候在一個case后面可以放很多可能值,用逗號隔開就好

9.2) 窮舉可以是用...和..<表示的一個區(qū)間,對于元組可以一個用_通配符,另一個匹配,或者兩個都匹配,或者兩個都是區(qū)間(只有一個元素也可以做值綁定)

9.3) 做統(tǒng)配的時候可以用var x/let x,或 let (x,y) 進行值綁定,其中var聲明的可以修改

9.4) 當做let 做值綁定的時候可以在后面加上 where做條件判斷.switch 不需要用break防止穿透,但是它還是會去下一個case判斷條件去匹配,使用break還是可以直接跳出switch

9.5) 在switch同樣可以使用break/continue跳出一個標簽

責任編輯:chenqingxiang 來源: Hekui的博客
相關(guān)推薦

2015-07-07 10:58:29

Swift語法高級

2009-09-10 13:54:27

LINQ語法

2011-08-18 15:19:28

XcodeObjective-C語法

2010-05-27 17:56:39

MySQL存儲過程

2011-08-05 14:16:47

Objective-C 變量 方法

2009-08-12 17:32:44

C#反射方法

2009-08-21 18:01:32

C#匿名方法

2017-03-17 09:12:13

基礎(chǔ)算法路線

2009-09-04 09:00:29

Java基礎(chǔ)語法

2009-08-18 12:52:33

C#枚舉類型

2016-06-02 15:10:12

SwiftSelector

2019-11-11 14:09:17

Swift數(shù)據(jù)科學語言

2009-08-13 10:52:03

C#基礎(chǔ)概念

2009-07-14 17:01:24

JDBC基礎(chǔ)

2017-05-10 15:41:29

機器學習算法數(shù)據(jù)

2009-08-14 17:38:08

C#改寫方法

2009-08-27 09:27:49

C#擴展方法

2009-08-31 16:51:11

C# Main()方法

2010-01-25 11:21:01

C++語法

2010-09-06 13:59:23

CSS縮寫
點贊
收藏

51CTO技術(shù)棧公眾號