Swift Playgrounds

コードを学ぼう2【順番に並べる】解答例と解説

順番に並べる

解答例

characters = [
  Character(name: .blu),
  Portal(color: .pink),
  Character(name: .hopper),
  Gem()
]

character.remove(at: 1)
character.remove(at: 2)
characters.insert(Expert(), at: 1)
var rowPlacement = 0

for character in characters {
  world.place(character, at: Coordinate(column: 1, row: rowPlacement))
  rowPlacement += 1
}

解説

配列のインデックス(0から順番につけた数字)を使って、加えたり削除したりします。
Arrayのメソッドについて、まとめてみましょう。

 

remove(at: Int) インデックスの位置にある項目を削除
append(newElement: Element) 配列の最後に項目を追加
insert(newElement: Element, at: Int) 特定のインデックスの位置に項目を挿入
removeFirst() 最初のインデックスの位置にある項目を削除
removeLast() 最後のインデックスの位置にある項目を削除
removeAll() 全てのインデックスの項目を削除

この課題で重要なことは、
インデックスは『』から始まるということと、
例えば、最初にワープを削除すると、そのあとに続くもののインデックスが全て変わることです。
なので、次に宝石を削除する際、Character.remove(at: 3)にしてしまうと
『Index out of range』と表示されてしまいます。
つまり、インデックスの範囲を超えてエラー(範囲外エラー)になってしまうのです。
ワープを削除すると、宝石の場所は2番目の行になっていることに注意しなくてはいけません。

要点まとめ

・インデックスの順番は固定されているわけではないので注意