:の前に引数、後に型という認識
イニシャライザの定義に関してはその認識で概ね合っていますが、イニシャライザの実行に関してはその認識だと間違ってます。イニシャライザの定義方法とイニシャライザの実行方法は違う
ので、まずその認識を改めてください。
※イニシャライザが何なのかわからない場合は、参考書にも記載されているはずなのでご自身で調べてください。以降は質問に対する直接的な回答しかしません。
※本質問ではイニシャライザについてなので、そこにフォーカスしますが、関数についても同様の考え方です。
(condition: qc)の部分がよくわかりません
YahooLocalSearchクラスの記載がないので若干参考書とは異なるかもしれませんが、YahooLocalSearchクラスは以下のようになっていると思います。
Swift
1public class YahooLocalSearch {
2
3 var condition: QueryCondition
4
5 // イニシャライザの定義(引数名: 型)
6 // (訳) conditionという引数名(ラベル)に対してQueryCondition型の引数を渡してください
7 public init(condition: QueryCondition) {
8 self.condition = condition
9 }
10}
冒頭で「イニシャライザの定義に関してはその認識で概ね合っています」と言いましたが、上記(参考書)の通り、質問者さんの言う「:の前に引数(厳密には引数名です)、後に型」になっていますよね?
で、問題はここからです。イニシャライザ(関数)の実行について見ていきましょう。
Swift
1// イニシャライザの実行(引数名: 引数) = クラスの初期化
2// (訳) 指示通りconditionという引数名(ラベル)に対してQueryCondition型の引数を渡します
3YahooLocalSearch(condition: qc)
qcは以下からQueryCondition型であることはわかりますよね?
Swift
1var qc = QueryCondition()
上記イニシャライザの実行では指示(定義)通りにQueryCondition型のqcを引数として渡しているわけです。
以上の通り、イニシャライザの実行については、イニシャライザの定義と違って「:の前に引数名、後に引数」となります。:の前にくる引数名は同じですが、後に来る部分が違う
ことがわかると思います。
ここからは余談です。
参考書で学習されているとのことですが、上記のような基礎をスキップしていきなり外部APIを使用したアプリの解説をしている参考書はないと思います。今回のイニシャライザのほか、変数や関数の定義方法および実行方法も最初のほうで解説されているはずです。
せっかく参考書をお持ちなので、はやる気持ちは良くわかりますが、参考書を何度も読み返してください。
teratailでは参考書なみに丁寧な解説はされない(できない)ので、参考書を見てどうしてもわからない場合にteratailを利用すれば良いでしょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/13 09:47