LoginSignup
2
4

More than 3 years have passed since last update.

クロージャってなに!?

Posted at

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

実行結果は同じですが、引数の扱いがシンプルになり、見やすくなります

終わりに

関数とクロージャを比較し、実際に記述するとより理解がしやすいです

まだ他にも省略記述など、クロージャについて色々あります

クロージャを理解するためには、まずは関数を理解する事

関数があって、初めてクロージャの利便性が見えてくる気がします

まだまだ自分もわからない事だらけなので、実装しながらより理解を高めていこうと思います

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4