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

関連記事

I20150805-182005.jpg

Swiftにおける関数型のエッセンスを学ぶために「関数プログラミング実践入門」を読み始めた

Swiftの関数型言語的な特徴についての話を各所で見るようになりましたが、自分は関数型言語の

記事を読む

I20160129-115948.jpg

【対処法】Swift 2(iOS 9)ではUITextFieldのtextがString?になっている

Swift 1(iOS 8)時代において、UITextFieldのtextプロパティは va

記事を読む

I20160417-171311.jpg

Xcodeのブレークポイントで変数の中身を通知センターに表示してみる

Xcodeのブレークポイントの機能を使って、ブレークポイントを通過した時点での変数の中身を通知セ

記事を読む

20141227-125250.jpg

実践的な内容まで載っている!開発のプロが教える Swift標準ガイドブック

株式会社マイナビ様より「開発のプロが教える Swift標準ガイドブック」の見本紙を頂きました。早

記事を読む

20141222-120336.jpg

【Swift】PlaygroundでUIImageに画像を読み込む方法

SwiftのPlayground内にて、UIImageに画像ファイルを読み込む方法を紹介しま

記事を読む

20140818-141439.jpg

iPhoneアプリを作りたい開発初心者にまずはやってみて欲しい3つのこと

今日は、これからiPhoneアプリを作りたい開発初心者の方にやってもらいたいことを書いてみた

記事を読む

I20160513-010707.jpg

Swiftで計算型プロパティをネストさせてみる

Swiftの計算型プロパティ(Computed property、コンピューテッドプロパティ)を

記事を読む

I20160411-122213.jpg

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

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

記事を読む

20160508-170745.jpg

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

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

記事を読む

I20160102-131507.jpg

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

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

記事を読む

I20170521-225453.jpg
東京駅八重洲口の「羊肉酒場 悟大」で網焼きジンギスカンを頂きました!

ゆうせいさんと株式会社 大庄さんからご招待頂き、悟大withサッポ

I20170514-165235.jpg
iPhoneと連携できる体重体組成計「Withings Body Cardio」を使ってます

ジムに通い始めて体脂肪率が落ち始めたのをキッカケに、iPhoneと

I20170507-155440.jpg
【派手髪】ハーレイクイン風の髪色に染めてもらいました

2016年10月20日、ハーレイクイン風の髪色に染めてもらいました

I20170504-173110.jpg
【メンズネイル】東京・新宿のネイルサロンでターコイズのホログラムネイルしてもらった

ネイルネタが1年分くらい溜まっているので、ちょっとずつ書いていこう

I20170502-010117.jpg
SNUGGのライトニングケーブルが耐久性高し。8ヶ月使ってますが断線の気配なし!

iPhoneの充電&転送ケーブルであるLightningケーブルっ

→もっと見る

PAGE TOP ↑