スポンサーリンク

【Swift】クロージャの解説と簡単なサンプル。

Swift
スポンサーリンク

今回の記事ではクロージャ(Closures)についてご紹介。正直クロージャは内容が初心者にとっては分かりづらいように感じ、また、最悪使用せずともアプリ開発などを行うことが可能です。しかし、クロージャを使用できてこそのSwiftユーザーとも考えていますのでこの記事でクロージャ初心者も簡単な例を踏まえてアプリに導入して体にクロージャを馴染ませましょう。

では早速メイン記事に移ります。

スポンサーリンク

クロージャとは?

まずクロージャとは何かの説明から行っていきます。簡単にいうと関数のようなもの、もう少し詳しくいうと関数のような機能を持った変数と考えれば良いと思います。

正確に伝えるとクロージャを定義した瞬間(定義内)で関数としての機能を完結させる自己完結型のオブジェクトです。こういうと難しいですね笑。

クロージャを記述すると下記のようになります。

{ (引数) -> 戻り値の型 in
    処理
}

これが最も基本的な記述方法になってくると思います。オブジェクトの定義内に関数としての処理をひっくるめて記述しているような内容です。

簡単な説明は以上にしておきます。早速使用例をご紹介しつつ手を動かしてみて実際に使用してみてください。

クロージャの簡単な使用例紹介

先ほどの簡単な記述に基づいてまずは処理を書いてみます。

/* 基本的な構造
変数名は「test_closures」
let test_closures = { (引数) -> 戻り値の型 in
                     処理
                     }
*/

//クロージャの処理
// 変数名は「test_closures」
let test_closures = {
                    () -> () in
                    print("テスト")
                    }
//クロージャの実行
test_closures()
// 出力:テスト

上記が引数と戻り値がないクロージャです。簡単な関数みたいですね。クロージャの部分は戻り値を「Void」にしても、省略しても同じ内容の記述になります。

//Voidで書き換え
let test_closures = {
                    () -> Void in
                    print("テスト")
                    }
//省略
let test_closures = {

                    print("テスト")
                    }

戻り値がと引数がない場合のみ省略は可能。

次は引数と戻り値ありのクロージャを見ていきます。

/* 基本的な構造
変数名は「test_closures」
let test_closures = { (引数) -> 戻り値の型 in
                     処理
                     }
*/

//クロージャの処理
// 変数名は「test_closures」
// 引数あり、戻り値なし
var test_closures : ((Int, Int) -> Void)
let test_closures = {
                     (num1: Int, num2: Int) -> Void in 
                     print(num1 + num2)
                     }
//クロージャの実行
test_closures(1, 2)
// 出力:3


// 変数名は「test_closures」
// 引数あり、戻り値あり
var test_closures : ((Int, Int) -> Void)
let test_closures = {
                     (num1: Int, num2: Int) -> Void in 
                     return(num1 + num2)
                     }
//クロージャの実行
test_closures(1,2)
// 出力:なし → test_closuresが変数としての値を戻り値として持っているのでこれを出力するにはprint関数で出力する必要がある。もしくはクロージャ内にprint関数を入れておくかで出力する。

print(test_closures(1,2))
// 出力:3

以上が簡単使用例です。ですがここまでではまだクロージャの使いやすさが分かりませんよね?
どのような場面で使用されるのかを下記で説明していきます。

クロージャの実際の使われ方 (少し応用)

実際便利と感じた使用方法は関数をクロージャ内部で使用できることです。クロージャ自体も関数の引数にできるので常時動かしている関数内にクロージャを引数にとってしまえばクロージャ内の関数を常に稼働させることができます。

内容が難しくなっているのでより詳細に解説します。

/* 基本的な構造
変数名は「test_closures」
let test_closures = { (引数) -> 戻り値の型 in
                     処理
                     }
*/

//クロージャの処理
// 変数名は「test_closures」
let test_closures = {
                    () -> () in
                    print("テスト") //テストを出力
                    pr() //テスト1を出力
                    }

//クロージャ内に潜ませる関数
func pr () -> Void {
    print("テスト1")
}

//クロージャの実行
test_closures()

// 出力:テスト
//    テスト1

クロージャを実行する際に関数を同時に実行できていますのでこういったものを駆使することで記述の幅が大幅に広がります。

今回の記事はここまでです。swift独自のクロージャの使い方にまずは慣れて使用できるようになっていきましょう。他にもswiftの記事を書いているので気になる記事はご参照ください。

本記事を読んでいただき感謝です。サイトを訪れていただいた方はプログラミング勉強中かと思いますのでプログラミング勉強のコツを合わせてご紹介。

スポンサーリンク
スポンサーリンク
スポンサーリンク

ブログに関しては500円程度かかりますが、それ以外は無料です。知識の吸収と並行してアウトプットは非常に効率が良いです。テックアカデミーに関しては講座レベルが高いにも関わらず、無料体験や人気口座も大幅値下げがあるので、重点的に学びたいものを無料体験してみてください。

転職時にも、エンジニアからテックアカデミー・Paizaは認知度が高いので、未経験入社採用を行う際履歴書で目に留まります。特にPaizaのスキルレベルA・SなどはIT業界でも評価されます。

テックアカデミー・Paizaの無料登録ができる期間中にぜひご利用してみてください。私も活用経験ありです。

Swift
スポンサーリンク
スポンサーリンク

コメント

タイトルとURLをコピーしました