番号ごとに4点質問です。
用語や矢印の向きが間違っていたら、ご指摘ください。
### ❶.(完了ハンドラの?)クロージャー
- 紫色の下線
spaceship
の、関係性がわかりません。
下記コードSpaceshipResponseCompletion
にてEnterを押すと、
swift
1func getSpaceship(url: String) { 2 api.getSpaceship(url: url, completion: SpaceshipResponseCompletion 3}
以下のように、クロージャ形式に変形するのですが、
swift
1func getSpaceship(url: String) { 2 api.getSpaceship(url: url) { (Spaceship?) in 3 } 4}
Spaceship?
の箇所に書くspaceship
(←引数?)(紫、上)と、
in
内のクロージャ(?)の直前のspaceship
との関係性がわかりません。
なぜ、クロージャ{}
の直前に引数名(?)が書かれるのかも、謎です。
swift
1 func getSpaceship(url: String) { 2 api.getSpaceship(url: url) { (spaceship) in 3 if let spaceship = spaceship { 4 self.setupView(spaceship: spaceship) 5 } 6 } 7 }
### ❷.クロージャにて、引数や定数の見分けが付かない
- "引数"
spaceship
は、Spaceshipクラス
を「参照」しているのか。(オレンジ下) - "引数"
spaceship
は、定数Spaceship
を「参照」しているのか。(オレンジ上)
以下の式をよく見かけますが、「引数の型」の箇所は、
「クラス名」や「定数名」でも良いという事でしょうか。
(オレンジ、水色の下線参考。)
func 関数名 (引数1:引数1の型, ...) -> 戻り値の型 { return 戻り値 }
## ❸水色のspaceship
if let
でアンラップ後、spaceship
に代入していることはわかるのですが
以下2点が分かりません。
- 何を代入しているのか。
- 水色上の
spaceship
が、クロージャ内にてなぜ使われているのか。(水色下)
### ❹クロージャ内の、self
- クロージャ内での関数呼び出しで、selfが必要な理由
質問は以上です。
お時間あるときに、ご返信頂けましたら幸いです????
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/24 01:55