Swift 中的基礎文法(二),swift基礎文法

來源:互聯網
上載者:User

Swift 中的基礎文法(二),swift基礎文法

1.Swift 中的函數

 /// 函數的定義    ///    /// - Parameters:    ///   - x: 形參    ///   - y: 形參    /// - Returns: 傳回值    func sum(x: Int, y: Int) -> Int {        return x + y    }

    print(sum(x: 10, y: 20))

 
   /*        外部參數就是在形參前面加了一個字     外部參數不會影響函數內部的細節     外部參數會讓外部調用看起來更加直觀     外部參數如果使用了'_',在外部調用函數時,會忽略形參的名字     "_" 就是可以忽略任意不感興趣的內容     */    func sum1(num1 x: Int, num2 y:Int) -> Int {                return x + y;    }

    print(sum1(num1: 10, num2: 20))

 
 func sum2(_ x: Int, _ y:Int) -> Int {        return x + y;    }    print(sum3())

設定預設值的函數

   // 預設值    func sum3(x: Int = 1, y: Int = 2) -> Int {        return x + y    }
這裡比較靈活

print(sum3(x: 10, y: 20))
print(sum3(x: 10))
print(sum3(y: 20))

 

無傳回值的函數

  func demo1() {        print("哈哈")    }        func demo2() -> (){        print("呵呵")    }        func demo3() -> Void {        print("嘻嘻")    }

demo1()
demo2()
demo3()

 

2.閉包

 // 1.閉包,最簡單的閉包        //n 如果沒有參數,沒有傳回值 可以省略 連 in 都一起省略        // option + click        let  b1 = {            print("hello")        }        b1()

 

    // 帶參數的閉包        //閉包中,參數,傳回值 實現的代碼都是寫在{}中        // 需要使用一個關鍵字 “in” 分隔定義和實現        // {形參列表 -> 傳回值類型 in // 實現代碼}        let b2 = {            (x: Int) -> () in            print(x)        }              b2(100)
   //帶參數 帶會傳回值的閉包        let b3 = {            (x: Int) -> Int in                        return x + 1        }        print(b3(10))

需要注意的是,

     // 如果函數的最後一個參數是閉包 函數參數可以提前結束,最後一個參數直接使用{}封裝閉包的代碼

 3.swift 解決循環參考的辦法

  1.仿照OC 解決

  

 //弱引用的對象 又一次執行 nil的機會        weak var weakSelf = self        loadData { (result) in            print(result,weakSelf)        }    }
    //[weak self] 和 __weak typeof(self) 作用類似  -> 對象被回收是 記憶體位址會自動指向nil  更加安全 推薦使用這種方式    func methodInSwift1() {        loadData { [weak self] (result) in            print(result,self)        }    }
    // [unowned self] 和 __unsafe__retained作用類似  -> 對象被回收是 記憶體位址不會自動指向nil 會造成野指標訪問        func methodInSwift2() {        loadData { [unowned self] (result) in            print(result,self)        }    }

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.