Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ////closureの使い方
- //クロージャとは変数に代入された関数
- //関数とクロージャー同じことができる
- func clo(){
- print("Hello world")
- }
- var clo2 = {print("Hello world")}
- var clo3:() -> (Void) = {
- print("Hello world")
- }
- clo()
- clo2()
- clo3()
- //============================
- //関数とクロージャー同じことができる(引数、戻り値あり)
- func doya(num:Int) -> Int{
- return num * 10
- }
- var doya2:(Int) -> Int = { (num) in
- return num * 10
- }
- var doya3:(Int,Int) -> Int
- doya3 = { (num,num2) in
- return num * num2
- }
- doya(num:3)
- doya2(3)
- doya3(4,5)
- //============================
- //closureを引数、戻り値として扱う関数
- func cloc(clo:(Int) -> Int) -> (Int) -> Int{
- let tehe = clo(3)
- return { (num) in return num * tehe }
- }
- let t = cloc(clo:doya2)(5)
- func cloc2(clo:(Int) -> Int) -> String{
- let tehe = clo(3)
- return "ふーん:\(tehe)"
- }
- cloc2(clo: doya2)
- //============================
- //エイリアス
- typealias hoho = (Int) -> Int
- //============================
- //引数に結果となるclosureを入れておくという考え方
- //APIのなど非同期処理でよく使われる。
- //結果が出たら、登録してあるクロージャーを実行する
- func trailClo(num:Int,completion:(Int) -> Void){
- let num2 = num * 3
- completion(num2)
- }
- //closureを登録しておく
- trailClo(num: 4, completion: { num3 in
- print(num3)
- })
- //最後のclosureを外にだして登録しておくこともできる
- trailClo(num:5){ num4 in
- print(num4)
- }
Add Comment
Please, Sign In to add comment