質問: []でクラスにあるインスタンスの初期値が空の配列ということですか? 2self.プロパティ名で式展開してるのはなぜですか? 以上の2点をお教えいただきたいです。
回答: > > 1var 変数名 : [クラス名] = []でクラスにあるインスタンスの初期値が空の配列ということですか? > > > こちらは空の配列で初期化しているということであっています。 Human型の配列、childrenという変数ですね。 ``` // children変数初期化いろいろ // ※全て同じ事をしています。 var children: [Human] = [] var children: Array = [] var children = [Human]() var children = Array() var children = [] as [Human] var children = [] as Array ``` > > 2self.プロパティ名で式展開してるのはなぜですか? > > > 式展開という言い方ではなく、こちらはchildren配列の中身を一つづつfor-in文で取り出していることになります。 そして取り出した変数child(Human型)のプロパティnameとageを出力している事になります。 children配列が空の場合はfor文の中は実行されません。 ※ちなみにこの場合self.プロパティ名と書かなくてもselfを省略して以下の様に書けます。 ``` func showChildren() { for child in children { print("\(child.name): \(child.age)歳") } } ``` 上記のクラスを使用するとしたら以下の様になると思います。 ``` let taro = Human(name: "太郎", age: 30) // 太郎がやってきました taro.walk() // 太郎が歩きます taro.sit() // 太郎が座ります taro.showState() // 太郎は座っています // children変数にHuman型が格納された配列を代入 taro.children = [Human(name: "二郎", age: 5),Human(name: "三郎", age: 2)] taro.showChildren() /* 二郎: 5歳 三郎: 2歳 */ ```