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

関連記事

20150109-223509.jpg

【Xcode 6】対応する開き括弧と閉じ括弧を調べる方法

Xcodeで、対応する開き括弧と閉じ括弧のを調べる簡単な方法があったので紹介したいと思います!

記事を読む

20150108-113233.jpg

【Swift】コードをコンパクトに記述できるオプショナルチェーン(optional chaining)の性質と活用例

最近はSwiftでコーディングすることが多い@akio0911です。今日はSwiftでコード

記事を読む

I20160418-235604.jpg

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

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

記事を読む

I20151119-165939.jpg

Swift 2.1に対応した本「詳解 Swift 改訂版」が出るぞ!

Swiftの文法に関する解説書の定番「詳解 Swift」の、Swift2.1に対応した改訂版「詳

記事を読む

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

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

記事を読む

20160309-131202.jpg

ゆるい入門書では物足りない人向けの濃い内容!「本気ではじめるiPhoneアプリ作り」

ヤフー株式会社のiOSエンジニアである西 磨翁(にし まお)さんより、「本気ではじめるiPhon

記事を読む

I20151126-170621.jpg

Swift 2のprintで改行しない方法

Swift 1時代はprintlnで改行あり、printで改行なしでしたが、Swift 2ではp

記事を読む

20150327-131839.jpg

【Apple Watchアプリ】ボタン内の文字の先頭に画像を入れる方法【WatchKit】

Apple Watch向けのアプリを作るためのフレームワーク「WatchKit」。そのWatch

記事を読む

20141222-120336.jpg

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

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

記事を読む

20140721-170305.jpg

プロトタイピングのツールや手法を学べる「プロトタイピング実践ガイド」

株式会社インプレスさまより献本御礼。 プロトタイピング実践ガイド スマホアプリの効率的なデザイ

記事を読む

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 ↑