スポンサーリンク
スポンサーリンク
解答例
let allCoordinates = world.allPossibleCoordinates
var blockSet: [Coordinate] = []
for coordinate in allCoordinates {
if coordinate.column > 5 || coordinate.row < 4 {
blockSet.append(coordinate)
}
}
for coordinate in blockSet {
for i in 1 ... 6 {
world.place(Block(), at: coordinate)
}
}
解説
このステージすべての座標を、allCoordinates配列で宣言します。
それから、空の配列のCoordinate型の変数名は、blockSetとします。
空の配列を宣言する時は、配列に入れる項目の型を指定しなければなりません。
for-inループで『allCoordinates』配列のcoordinateを調べ、
条件をblockSetにappend(追加)していきます。
coordinate.column
、coordinate.row
のように
ドット表記にすることにより、
coordinateのcolumn(座標の列)、coordinateのrow(座標の行)についての値を
示すことができます。
これで、比較演算子(< 、 >など)を使うと、条件に合った座標をifで調べることができます。
Arrayのメソッドで出てきましたが、
insert()は要素と整数を記入して、特定のインデックスの位置に項目を挿入しましたが、
append()は配列の最後に項目を追加することになります。
さて、こうしてifの条件に合った座標をblockSet配列に追加したら、
またfor-inループを使ってその座標の場所へブロックを積み上げます。
配列を反復処理するんでしたね。
要点まとめ
・値を指定せずに配列を宣言する際は、型を指定する
スポンサーリンク