Swift基礎語法學習總結一

2022-07-03 08:54:10 字數 3953 閱讀 5260

1.基礎

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

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

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

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

1.5) swift不允許在不同種型別間做加減乘除,要先做型別轉換或運算子過載.

1.6) typealias 可以為乙個型別指定另外乙個名字,這樣可以清晰的表達型別的意義.typealias newtype = oldtypename

1.7) assert 斷言表示自己丟擲異常,assert 第乙個引數表示 通過而不拋異常的條件,第二個引數表示提示,第二個引數可以沒有

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

2.變數

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

2.2) let 宣告的變數不可再改變,而var變數可以再改變,但是你不能再宣告乙個已經宣告的常量或變數.

2.3) 可以在一行同時宣告多個常量或變數,用逗號隔開;如果每個常量對應乙個var或let只需要用分號隔開即可.

2.4) 每個常量和變數都一定會有固定的型別,如果沒有指定型別,swift會根據後面的賦值型別來推斷.

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

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

2.7) swift裡可以宣告元組,型別類似於(int, string),你可以用var宣告也可以用let宣告,裡面兩個都會是變數或者常量

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

2.9) 可以用元組名直接通過下標索引直接來訪問元組裡對應的值,比如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位浮點數,float是32位浮點數,對小數自動推斷是double型別,除非是指定過型別的

3.3) 可以跟指定為浮點型別的常量或變數賦乙個整數值但是不能是整數變數,它會自動轉換成浮點數.

3.4) 顯示指定型別的變數或常量不能跟它賦值乙個不同型別的值,它不能做自動轉換,除了跟浮點型別賦值乙個整數數值

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

3.6) 如果是乙個class的可選型別,你可以通過?.訪問它的屬性和方法,它是通過前者是否會相應後面的方法,如果能響應則執行,不能則返回nil

3.7) ?其實是個語法糖,比如string?型別等價於optional型別,只是方便寫而已,他和string型別本質是不同的

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

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

3.10) 之所以需要有可選型別是因為swift是型別絕對安全的語言,它需要你在使用變數時一定有值,但是這種可選型別太麻煩,所以產生了!型別,!型別本質應該就是可選型別

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

4.字串

4.1) ... 表示閉區間/ ..< 表示開區間, == 表示值相等/=== 表示引用相同, + 可以直接加字串或陣列

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

4.3) 可以用for in 遍歷字串,用 count全域性函式計算字元數,用isempty屬性判斷是否是空字串,有hasprefix判斷字首(字尾等)

4.4) 可以用startindex和endindex獲取開始和結束下標,用陣列和下標的形式訪問單個字元;還可以通過\()的方式生成字串

5.陣列

5.1) swift中的陣列可以用[string]和array來宣告,它們是同乙個意思,賦值也直接用中括號表示就可以了,裡面的值需要是同乙個型別

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) 初始化乙個陣列

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

6.字典

6.1) 字典是通過 [string : string] / dictionary宣告的,形式也是用[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宣告set,和陣列一模一樣跟它賦值,也可以通過賦值清除,也必須是同一型別,也有insert/contains方法,isempty屬性

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

8.for迴圈

8.1) for index in 1...5 的這個index只是在當前這個迴圈的作用域內,如果for迴圈外面也有乙個index,隨便修改也不會和它又什麼影響

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

8.3) for var index = 0; index < 3; ++index 這種for迴圈也還是可以的

9.switch語句

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

9.2) 窮舉可以是用...和..《表示的乙個區間,對於元組可以乙個用_萬用字元,另乙個匹配,或者兩個都匹配,或者兩個都是區間(只有乙個元素也可以做值繫結)

9.3) 做統配的時候可以用var x/let x,或 let (x,y) 進行值繫結,其中var宣告的可以修改

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

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

Swift基礎語法學習總結

swift基礎語法學習總結 swift高階語法學習總結 swift語法總結補充 一 1.基礎 1.1 swift還是使用 和 來注釋,並且 允許多行注釋.1.2 swift使用print和println列印,它的傳參是乙個泛型,幾乎所有型別都是可列印的.1.3 swift在語句後面加分號與否都是正確...

基礎語法學習

public class hello 類名,變數名,方法名 關鍵字 以 a z a z 開頭 整數型別 byte short int long l 浮點型別 float f double 字元型別 char boolean型別 true 或 false 引用資料型別 類,介面,陣列 二進位制 0b ...

python基礎語法學習 一

range有三個引數 range start,stop,step start代表初始數字,按step制定的大小 等差遞增或遞減到stop 1為止 print 輸出內容後加上逗號就能防止自動換行 format是增強格式化輸出。defformat value,format spec none 第乙個引數...