【Swift】クロージャをメソッドや関数の引数として渡す方法

公開日: : 最終更新日:2016/02/10 iPhoneアプリ開発

20150525-224340.jpg

Swiftでメソッドの引数としてクロージャを渡す方法について解説したいと思います。

    

スポンサード リンク

クロージャをメソッドや関数に引数として渡す

引数の型として「() -> Void」などと記述すれば、クロージャを受け取ることができるようになります。

以下、サンプルです。

func function1() {
    println("function1")
}

func function2(closure: () -> Void) {
    closure() // 渡されたクロージャを実行する
}

function2(function1)

function2( {
    println("直接渡してもOK")
} )

    

クロージャが渡された時だけ実行する

引数のクロージャの型をOptionalにすれば、クロージャが渡された時だけ実行するようにできます。

func function2(closure: ( () -> Void )? ) {
    closure?() // クロージャが渡されている場合は実行する
}

function2( {
    println("ほげふが")
} )

function2(nil) // クロージャを渡さない = nilを渡す

    

クロージャに処理結果を渡すようにする

クロージャに処理結果を渡して、その内容によってクロージャで行う処理を切り替える場合は、以下のように書きます。

func function2(closure: ( (success:Bool) -> Void )? ) {
    var success:Bool = false
    
    // 何か処理を行う
    
    if success {
        closure?(success: true) // 処理に成功したらtrueを渡す
    }else {
        closure?(success: false) // 処理に失敗したらfalseを渡す
    }
}

function2 { (success) -> Void in
    if success {
        println("処理が成功しました")
    }else{
        println("処理が失敗しました")
    }
}

    

@akio0911はこう思った。

非同期処理を別のクラスに切り出した場合などによく使う方法だと思います!

この記事が気に入ったら「いいね!」しよう

follow us in feedly

Feedlyで最新記事を購読

Twitterで更新情報をゲット!

LINEでご感想・ご要望お送りください!
(スマホでLINEを起動 > 友だち追加 > QRコード)

関連記事

I20160102-131507.jpg

Swift 2の文法が分かるオススメ本「詳解 Swift 改訂版」

Swift文法書の定番とも言える、荻原 剛志さんの「詳解 Swift」。 Swiftの文法をキ

記事を読む

20160811-173801.jpg

【iOS】特定のセルがUITableViewの表示領域内に収まっているかどうかを調べる

特定のセルがUITableViewの表示領域内に収まっているかどうかを調べる方法を紹介します。


記事を読む

20141210-164612.jpg

【Swift】Generated Header内にSwiftクラスの定義が記述されない場合の確認事項【Xcode6】

Swiftで書いたクラスをObjective-Cで使う際には、「Generated Header

記事を読む

I20151107-111928.jpg

Swift 2で要求バージョンの指定・実行環境バージョンの確認を行う(#availableと@available)

Swift 2で追加された#available, @availableの使い方についてメモしてお

記事を読む

iPhoneゲームを簡単に開発したいならこの本がオススメ!「Sprite Kit iPhone 2Dゲームプログラミング」

iPhoneゲームアプリを簡単に開発したいなら「Sprite Kit iPhone 2Dゲームプ

記事を読む

20160508-170745.jpg

SwiftTaskで失敗したタスクによって異なるエラー処理を行う方法

SwiftTaskで複数のタスクを.successでチェーンさせ、失敗したタスクによって

記事を読む

20150116-114410.jpg

プログラミング未経験者がSwiftの文法を学ぶのにオススメな本!「たのしいSwiftプログラミング」

楽しみにしていたSwiftの入門書「たのしいSwiftプログラミング」を読み終わったので、レビュ

記事を読む

エディタのショートカット・Auto Layout・ブレークポイントに関する詳しい解説も!「Xcode5徹底解説」

著者の@es_kumagaiさんより献本御礼。iOSアプリ開発に用いるツール「Xcode 5」の

記事を読む

I20160418-235604.jpg

XcodeのStoryboardで部品を選択しやすくする2つの方法

ストーリーボード上で部品が入り組んでくると選択しづらくなってきますが、そんな状況でも部品を選択し

記事を読む

20141006-103526.jpg

Xcode 6におけるNSUserDefaultsのplistの在り処と、内容を確認・書き換え・削除する方法

Xcode 6にて、NSUserDefaultsのplistファイルの在り処と、内容を確認・書き

記事を読む

PAGE TOP ↑