困っていること
swift勉強中の者です。
現在、クロージャ、コールバック辺りについて学んでいるところです。
ネット上のサンプルを動かしてるのですが、コードが正しく読み解けない部分があり苦戦してます。
先輩方教えて下さい。
宜しくお願いします。
分からないこと
コールバック関数と呼び出し元とで「引数」と「戻り値」の型が合っていない、ようにしか読み解けない。。。
なぜこのような記述になるのか分からない。
・引数について
クロージャの部分は以下のようにIntを引数に取るように宣言されてます。
swift
1func incrementAge(completion: (Int) -> Void)
なので呼び出し元では、このようにIntを渡すのでないか?と思うのですが、これだと
「error: consecutive statements on a line must be separated by ';'
me.incrementAge(completion:{50 in」というエラーになってしまいます。
swift
1me.incrementAge(completion:{50 in
このように呼ぶのが正しいようです。(急に出てきたretって何?retでもhogeでも実行できた)
swift
1me.incrementAge(completion:{ret in
・戻り値について
コールバック関数側はVoidだが
swift
1func incrementAge(completion: (Int) -> Void)
呼び出し元ではこれでIntを受け取れている。
swift
1print(ret)
該当のソースコード
swift
1 2class Person { 3 var age: Int = 30 4 func incrementAge(completion: (Int) -> Void) { 5 age = age + 5 6 completion(age) 7 } 8} 9 10let me = Person() 11me.incrementAge(completion:{ret in 12 print(ret) 13})
試したこと
・一行ずつprint()して処理の順番だけは理解できました
・引数をIntに変えてみた

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/03/05 09:55