Swiftを勉強をする中で、よくわからなかったのが「クロージャ」・・・
クロージャと言われても、何の事かさっぱり
でも、参考サイトや本を読むというよりは、実際に簡単なコードを書いて動かすと少しは理解出来る
使わないと忘れてしまうので、これも備忘録として投稿します
大まかなクロージャの要点
・クロージャの文法でできることは、基本的に関数でも出来る・・・というより、関数もクロージャである
・ぶっちゃけ、無理にクロージャを使用する事はない
・クロージャを使用するメリットとしては、場合によってはコードが短く簡潔になるという事
クロージャの基本文法
{ (引数) -> 戻り値の型 in
処理
}
基本文法に当てはめて動かすと
var closureTest = { () -> () in
print("クロージャのテスト")
}
//クロージャの実行
closureTest()
closureTest()でクロージャの実行が行われ、print("クロージャのテスト")が表示される
関数とクロージャ
引数なしの処理
// 関数
func testFunction() {
print("これは、関数です。")
}
testFunction()
実行結果
これは、関数です。
// クロージャ
var testClosure: () -> () = {
print("これは、クロージャです。")
}
testClosure()
実行結果
これは、クロージャです。
関数とクロージャ共に似た実行結果になります
引数ありの処理
// 関数
func testFunction(a:Int, b:Int)->Int{
return a + b
}
print(testFunction(a: 5, b: 7))
実行結果
12
// クロージャ
var testClosure: (Int, Int) -> Int
testClosure = { a, b -> Int in
return a + b
}
print(testClosure(5, 7))
実行結果
12
実行結果は同じですが、引数の扱いがシンプルになり、見やすくなります
終わりに
関数とクロージャを比較し、実際に記述するとより理解がしやすいです
まだ他にも省略記述など、クロージャについて色々あります
クロージャを理解するためには、まずは関数を理解する事
関数があって、初めてクロージャの利便性が見えてくる気がします
まだまだ自分もわからない事だらけなので、実装しながらより理解を高めていこうと思います