Swiftの閉パッケージ

1910 ワード

閉パッケージは、コードに渡されて使用される関数コードブロックから構成されています.swiftの閉パケットは、C、OCのコードブロックblocks、および他のいくつかのプログラミング言語の匿名関数と類似している.
閉パッケージは、そのコンテキスト内の任意の定数および変数の参照をキャプチャおよび格納します.つまり、私たちがよく言う定数小包と変数小包です.
閉パッケージには通常、3つの形式があります.1:グローバル関数は、名前が付いていても値が取得されない閉パッケージです.2:ネストされた関数は、名前があり、閉関数ドメイン内の値を取得できる閉パッケージです.3:閉パッケージ式は、軽量レベルの構文を使用して書かれたコンテキスト内の変数または定数値を取得できる匿名の閉パッケージです.
閉パッケージ式の構文:
{ (  ) ->       in
       
}

閉パケット式パラメータはinoutパラメータであってもよいが、デフォルト値を設定することはできない.名前付き可変パラメータも使用できます
let alertVC = UIAlertController()
 alertVC.addAction(UIAlertAction(title: "action1", style: .cancel, handler: nil))
 alertVC.addAction(UIAlertAction(title: "action2", style: .default, handler: nil))
 alertVC.addAction(UIAlertAction(title: "action3", style: .default, handler: { (UIAlertAction) -> Void in
     NSLog("   action3")
 }))
 alertVC.addAction(UIAlertAction(title: "action4", style: .default) { _ in
     NSLog("   action4")
 })
 self.present(alertVC, animated: true, completion: nil)

上記の例では、swiftにおける閉パケットの表現形式および具体的な使用について説明したが、action 3ではUIAlertActionに関する完全な形式の閉パケットであり、action 4では下線が用いられていることがわかる.を参照してください.では、このような形式の閉鎖も可能であることは明らかです.
≪後続閉パッケージ|Extreme Close Package|emdw≫:長い閉パッケージ式を最後のパラメータとして関数に渡す必要がある場合は、後続閉パッケージを使用して関数の可読性を向上させることができます.後続の閉パケットは、関数カッコの後に書かれた閉パケット式であり、関数は最後のパラメータとして呼び出すことをサポートします.後続の閉パッケージを使用する場合は、パラメータラベルを書く必要はありません.
self.present(alertVC, animated: true) {
     NSLog("  AlertVC")
 }
//      present(alertVC, animated: true)           ,     { NSLog("  AlertVC") }         ,         present            。


閉パケットにおける変数のキャプチャとOCにおけるblockの局所変数値のキャプチャは同じ意味である.閉パッケージ自体は、関数または閉パッケージを定数または変数に割り当てても、実際には定数または変数の値を対応する関数または閉パッケージの参照に設定しているため、飲用タイプです.
それ以外に,閉包には脱出閉包と自動閉包の2つの具体的な表現形式が含まれている.現在まだ勉強中なので、本文は今あまり説明しません.
以上、swiftの閉パッケージに関する内容です.ありがとう!