【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コード)

関連記事

I20150909-225806.jpg

Functional Programming in Swiftを読むために、すごいH本を読み終えた感想

「Functional Programming in Swift」という本がありまして、

記事を読む

I20151103-131550.jpg

iPhoneアプリ開発にオススメの本7選(初心者向け含む)2015年11月版

Xcode 7/Swift 2/iOS 9に対応した関連書籍が揃ってきたので、iPhoneア

記事を読む

I20160411-122213.jpg

Swift 2.2の変更点をまとめてみた

2016年3月22日、Xcode 7.3と共にSwift 2.2が正式にリリースされました。

記事を読む

20160807-113229.jpg

UITableViewのリサイズに合わせて一番下のセルを常に一番下に表示する方法

一番下のセルを表示している状態でUITableViewの下端を上に移動させると一番下のセルが隠れ

記事を読む

20140901-120049

デザイン初心者な僕がデザイナーさんにそこそこ褒められるアプリアイコンを作った方法

デザイン初心者の僕がアプリアイコンを作ったら、本職のデザイナーさんにそこそこ褒められるという嬉しい体

記事を読む

I20150924-010943.jpg

Swift 2.0で追加されたOptionSetTypeがなかなか便利

Swift 2.0で追加されたOptionSetTypeプロトコルがなかなか便利なので紹介し

記事を読む

20140810-193043.jpg

WordPressでObjective-Cのソースコードをキレイに整形して表示する方法

WordPressの記事内で、Objective-Cのソースコードをキレイに整形して表示する方法

記事を読む

I20160212-000722.jpg

Swiftにおけるセレクタ(Selector)について調べてみた

NSTimerなどを使う際、引数に「Selector」という型があるのですが、これがSwiftで

記事を読む

I20151122-213340.jpg

【入門本】詳細! Swift 2 iPhoneアプリ開発 入門ノート Swift 2 + Xcode 7対応

ソーテック社より「詳細! Swift 2 iPhoneアプリ開発 入門ノート Swift

記事を読む

I20151107-111928.jpg

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

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

記事を読む

[iOS][Swift]スタックトレース(コールスタック)を表示する2つの方法

iOSアプリ開発で、スタックトレース(コールスタック)を表

【使い方】iOS 10のSiriで出来る事299個をまとめてみた

そろそろiOS 11がリリースされそうな雰囲気ではありますが、iO

【メンズネイル】 ハーレイ・クインがテーマのネイルにしてもらった

2016年9月27日、いつもお世話になっている「Total b

[iOS][Swift]指定したディレクトリにあるファイルの一覧を取得する

iOSで、指定したディレクトリにあるファイルの一覧を取得する方

Apple Watch Series 2が日々の生活で手放せない件

今年の1月2日にApple Watch Series 2 - 42

→もっと見る

PAGE TOP ↑