Swift Playgrounds

コードを学ぼう2【取り除いた値を追加する】解答例と解説

取り除いた値を追加する

解答例

// 行2のすべての座標を含む配列を作成します。
var row2 = world.row(2)

// 座標を入れるための空の配列を作成します。
var discardedCoordinates: [Coordinate] = []

for i in 1...12 {
  for coordinate in row2 {
    world.place(Block(), at: coordinate)
  }

  // 座標を取り除いて、空の配列に追加します。
  discardedCoordinates.append(row2.removeFirst())
}

// 空の配列に追加した各座標にキャラクターを置きます。
for coordinate in discardedCoordinates {
  world.place(Character(), at: coordinate)
}

解説

まず最初に、『row2』という変数を宣言します。
rowは『行』のことでしたね。
クリックしてみると、真ん中が『2行目』でした。
この2行目の全ての座標の配列を、『row2』にするため、
var row2 = world.row(2)とします。
worldインスタンスのメソッドを使って、

var row2 = world.coordinates(inRows:[ 2 ])

とすることもできます。
こちらは、整数の間に『,』で区切って、複数行の配列を作る場合にも使える形です。

次に、座標を入れるための空の配列を作ります。
空の配列を作る時は、変数名(discardedCoordinates、取り除かれた座標という意味。後で使うので、わかりやすいものにしましょう)と
[]で『』を宣言するんでしたね。

forループが元々書いてあり、12回中身を繰り返します。
その中身は、for-inループになっており、2行目にブロックを置くことになっています。
それから、『座標の配列から項目を1つ取り除き、それを空の配列に追加』とあるので
先ほど作った『discardedCoordinates』という空の配列に、『append』メソッドで()の中身を追加していきます。
appendの()の中身、つまりrow2.removeFirst()ですが、
removeFirst()は以前、『順番に並べる』の配列にも出てきましたが
最初の要素を取り除いて戻す〟メソッドです。
選択肢の中に出てくるので、使ってみましょう。
最初の要素とは、座標でいうと『0,2』です。
そして次のforループでの最初の要素は、『0,2』は取り除かれているため、
『1,2』、次は『2,2』…という感じになります。
その取り除いた最初の座標を、discardedCoordinatesに追加(append)し、
forループでそれを12回繰り返します。
最初がないので、段々の形になっています。

空の座標には、取り除かれた座標が追加されました。
そこに、またfor-inループでキャラクターを置いていきます。
座標は12回繰り返して作られたので、12体のキャラクターが設置されました。

完成図。壮観ですね。てか、ちょっと笑える(⌒▽⌒)
取り除いた値を追加する

要点まとめ

・remove,append,insertなどのメソッドを使えるようになろう