跳轉到

附加到陣列

目標:依據座標屬性來附加到空的陣列。

簡介

將項目個別加入陣列中,存粹是重複性的操作。要是能夠建立一套規則來將座標包含在陣列中呢?

首先,從 allCoordinates 開始,這是由關卡世界中所有座標組成的陣列

接著,你需要一個空的陣列,讓這些座標可以附加在其中。由於要宣告一個未儲存任何值的陣列,因此需要指定它應該容納的項目類型

建立空的陣列

在變數名稱後使用:來宣告其類型,然後將它指定為空的陣列。

var newLocations: [Coordinate] = []

最後,反覆運算 allCoordinates 並檢查每個座標的 columnrow 屬性。如果座標的 column 屬性大於5或 row 屬性小於4,則將它附加到空的陣列中。然後將六個磚塊放置在陣列中的每個座標上。

img

講解

首先,要將範圍內的值(座標的 column 屬性大於5或 row 屬性小於4)加入 append 到 blockSet 陣列中。

接著,將 blockSet 陣列中的座標加上6塊磚塊(可用 for-in 迴圈重複執行6次)

就能達成關卡目標了!

解答

請務必嘗試解題

請同學務必嘗試自己解題,不要直接看答案。學習程式時最好的學習方法是自己嘗試解題,程式設計不會只有一種寫法,請通過不斷的嘗試和優化來找到屬於自己最好的解答。

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)
    }
}

後記

很好!

陣列會引領你走向建構世界的新世界!請記住,你可以建立完全空白的陣列,稍後再向其中加入值,但是你必須指明該陣列包含的項目類型。當你宣告陣列時,請使用下列語法為它指定類型:

var placementLocations: [Coordinate]