Swift-MJ

1.聲明變量 常量

聲明變量:var age = 10swift

聲明常量:let age = 10 (不加分號,除非多條語句寫在同一行)安全

二進制前綴:0b(必須小寫)函數

八進制前綴:0ospa

十六進制前綴:0xcode

2. 基本數據類型:

Int Float Double Bool  Character String Array Dictionary Tuple(元組類型) Optional(可選類型)orm

Swift中的中包括有符號整型和無符號整型blog

字符串:@"abc\(x)"  x爲一個整型數據或其餘:在Swift中沒有stringWithFormat的用法  用\()代替字符串

1> 定義一個指定類型的變量/ 常量,以下格式:

let age: Int = 10string

2> Swift中的小數默認爲Double型,須要自行設置爲Float 

3> Swift強調語法安全:不一樣類型的兩個變量 不能相加

4> 浮點數能夠用十進制和十六進制表示 

十進制表示浮點數:eN:10的N次方it

// 沒有指數時
let d1 = 12.5
// 有指數
let d2 = 0.125e2

十六進制表示浮點數:pN:2的N次方   d3 = (8/16 + 12) * 1 = 12.5

let d3 = 0xC.8p0
// d3 = 0xC.8 * 2的0次方 = 12.5

3. Swift運算符:

1> 賦值=:

Swift可進行多個賦值:

基本的邏輯運算都一些樣 強調賦值運算符:

= OC中的賦值運算符有返回值if(x = y)爲永真  

Swift中這種寫法屬於語法錯誤,Swift中=沒有具體返回值

2> 取餘運算%:

Swift能夠對浮點型數據進行取餘運算 

a % b 結果所得餘數的正負和a的符號一致

3>比較運算符:

Swift中的if語句必須是Bool型   true爲真 false爲假  沒有C語言中非0爲真的說法

三目運算符中的條件也必須是Bool型的  比較運算符和邏輯運算符的返回值爲true 和 false兩種(不是1 0)

4> 範圍運算符(Swift新增)

a...b:範圍是:[a, b]

a..<b: 範圍是:[a, b)

Swift中的for循環:

for i in 0...5 {
// 執行6次 :0 1 2 3 4 5
}

5> 溢出運算符:

&+ &- &/ &* &%

上溢出:最大值+1結果爲0  下溢出:最小值-1結果爲最大值

4. Swift新增的特殊數據類型:

1> 元組類型Tuple:

定義:有N個任意類型的數據組成

let po = (x : 12.6, y : 18 ) -----> x y是元素

例:

var point = (x : 10.3, y : 5)
/**
   *獲取元組類型中的元素:
    *point.x  point.y
    * point.0(獲取x) point.1(獲取y)
**/ 

用let定義一個元組以後,不能夠改變其中元素的值

下面語句錯誤:指定元素類型以後 不能加上元素的名稱:

var person:(Int ,String) = (age : 23, name : "ha")

元組中:下劃線能夠忽略某個元素的值,以便取出其餘的元素值

6. 分支語句 循環語句:

for ,while ,do while ,if都與OC中同樣

注:這些語句後面必須加{}

1> for in:

for i in 1...4 {
// 若是不使用i 能夠用下劃線_替換i
}

2> switch:

在Swift中:switch case後面不須要加break

每個case與語句後面必須加內容,不能爲空的

1》switch多條件匹配:

case0, 1, 2:(知足三個條件中的一個 用逗號分割便可      C語言中多條件表示:case 0: case 1: case 2:  --> 比較麻煩 )

2》switch範圍匹配:

case 0...3:      case 4...10:etc

3》switch匹配元組:

例:一箇中心在原點:邊長爲4的正方形:判斷一個點是否在這個矩形框中:

let point = (1, 1)
switch point {
case (0, 0):
// x能夠爲任意值:x軸點
case (_, 0):
// 在矩形框中:
case (-2...2, -2...2):
}

4》case數值綁定:

能夠將switch中的值綁定給一個特定的常量或者變量,以便在case裏面的語句中使用這個值

注:fallthrough後面的case語句不能定義變量和常量:例如case let (x, y) where x == y

let point = (10, 0)
switch point {
// 只要某個點的y值知足爲0 就能夠走下面的語句,而後獲取x的值 能夠進行其餘的操做
case (let x, 0):
// 任意一個點都會走
case let (x, y):
}

 5》switch中添加where語句:

case let (x, y) where x == y :

6》fallthrough:

做用:執行完當前的case語句,會接着執行fallthrough後面的case或者default語句(至關於C語言中沒有加break語句)

7. 加標籤:

out : for _ in 1...2 {
     for _ in 1..3 {
        print("ha")
        // break本來只能跳出內層循環    能夠經過加標籤 跳出外層循環
        break out
     }
     print("kk")
}

8. 函數:

1> 函數定義:

func 函數名(形參列表) -> 返回值類型 {

函數體

}

形參列表:形參名1: 形參類型1, 形參名2:,  形參類型2

無返回值:

func 函數名(形參列表) -> () 

func 函數名(形參列表) -> Void

func 函數名(形參列表)

2> 外部參數名:

使用外部參數名的目的:就是在分不清每一個形參的意義時 能夠經過外部參數名提示

以下:Age   Number就是外部參數名

格式:外部參數名寫在形參名前面 用空格隔開

func HA(Age age : Int, Number num : Int) {

}

// 調用方法:

HA(Age: 10, Number: 34)

3> 默認參數值:

在形參前面加#至關於生成一個與當前形參同名的外部參數名

func add(name : String, age : Int = 20){

}

// 存在默認參數的時候,Swift會自動給它生成一個跟形參名相同的外部形參名,  調用方法的時候須要將參數名寫出

add("haha", age: 32)

在帶有默認參數值的形參名前面寫一個下劃線:_  在方法調用的時候就不用寫外部參數了

func add(name : String, _ age : Int = 20){

}

// 存在默認參數的時候,Swift會自動給它生成一個跟形參名相同的外部形參名,  調用方法的時候須要將參數名寫出

add("haha",  32)

4> 常量參數和變量參數:
默認狀況下,函數的參數都是常量參數, 不能在函數內部修改

若是須要在函數內部對參數進行修改,需定義爲var

5> 輸入輸出函數:

swift中想要修改函數內部局部變量的值,利用輸入輸出函數

輸入輸出函數定義:

func swap (inout num1 : Int, inout num2 : Int)

注:不利用第三個變量的前提下,交換兩個變量的值:一:異或運算   二:和 差

a. 傳遞實參的時候,必須在實參的前面加上&  

b. 不能傳入常量或者字面量(例:12)做爲參數值,

c. 輸入輸出參數不能有默認值 不能使用let var修飾(inout和let var 不能共存)

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息