今回は、クロージャー について学習したので、アウトプットしていきます
※以下の内容は、学習内容のアウトプット用のため、誤りがある場合があります。予めご了承ください
クロージャーとは?
クロージャー とは、再利用可能なひとまとまりの処理のことをいいます。
関数はクロージャーの1種であるため、共通の使用が数多くあります。
関数を使用するには、「func」キーワードによる定義が必要でしたが、クロージャーはクロージャー 式という定義方法があります。
関数について復習したい方はこちら!!
関数を理解しよう!( https://qiita.com/syunta061689/items/77e8aa76070a734f1b4d )
基本的な定義の方法は以下の通りです。
{(引数名1: 型, 引数名2: 型...) -> 戻り値の型 in
クロージャーの実行時に実行される文
必要に応じてreturn文で戻り値を返却する
}
次に簡単な例を見ていきましょう。
let double = {(x:Int) -> Int in
return x * 5
}
double(5) //25
引数と戻り値の型の記述は関数と同様ですが、戻り値の型と文はinキーワードで区切ります。
上記の例では、Int型の引数を1つ取り、それを5倍にしたInt型の戻り値を返すクロージャーを定義して実行しています。
クロージャーとしての関数
func rectangleArea(height:Int,width:Int) -> Int {
let result = height*width
return result //計算結果を戻す
}
let area = rectangleArea(height: 5,width: 6) //30
上記の例では、変数の型はInt -> Intと明確に決まっており、計算結果のresult returnを実行し,戻り値を返却しています。
クロージャー としてのArray型
次は、配列または、辞書を返すよう:にするパターンです。
Array型について復習したい方はこちら!!
Array型を理解しよう!(https://qiita.com/syunta061689/items/89e549f4a3254f635ce1 )
簡単な例を見ていきましょう。
func a(num: [Int] -> [Int] { // Int型な配列を返します
print num
}
func b(strings: [String: Int]) -> [String: Int]{ // キーがString型、値がInt型な辞書を受け取れるようにします。
print strings
}
let test = a(num:0,1,2)
let test1 = b(String:[チンパンジー:0,ゴリラ:1])
print(a)//[0,1,2]
print(b) //[チンパンジー:0,ゴリラ:1]
最後に
今回は、クロージャーについての基礎をまとめました。しかし、今回記述した内容は基礎中の基礎で、クロージャーは奥深く、複雑な書き方があるのでそこの理解もしっかり今後も行っています。