Help us understand the problem. What is going on with this article?

『() -> Void』って何?

はじめに

ここでいう() -> Voidとは

func function(closure: () -> Void) {
    print("test")
    closure()
}

のようにクロージャやコールバックの定義でよくみるものについての記事です。

そもそもclosure:() -> Voidとは

closure:() -> Void
においてclosureは引数ラベル
()は型として関数を指定する引数
Void は何も返す値がないことを表す返り値
です。

Void () の説明や違いについてはこちらをご覧ください。

引数が関数ってどういうこと?

あくまで個人的な解釈で例外があるかもしれませんが、引数が関数であるとは本来関数の中に書くはずだった処理を他の場所に書き、呼び出せるようにしたという解釈をしました。

関数を引数に持つ関数を実行する流れをめちゃくちゃ丁寧に見ていきます。

func function(closure: () -> Void) {

}

function(closure: {

})

上のコードだけでもplaygroundなどで実行することは可能です。

func function(closure: () -> Void) {

}

function(closure: {
    print("test")
})

呼び出したコードにprint文を追加しましたが、これだけでは何も起きません。

func function(closure: () -> Void) {
    closure()
}

function(closure: {
    print("test")
})

関数の定義の際に引数としたclosure()を書くことでようやくprint("test")が実行されます。

func function(closure: () -> Void) {
    print("hoge")
    closure()
    print("babu")
}

function(closure: {
    print("test")
})       //hoge test babu

関数の定義の際に処理を入れることも可能です。(すごく当たり前ですが)

Hyperbolic_____
iOSアプリを作っている大学生。代数学とかも好き。Scratchによるプログラミング教育も好き。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした