2
在適當的功能方式下,Scala中以Java代碼執行以下代碼的最佳方式是什麼?Scala最佳實踐:映射2D數據
LinkedList<Item> itemsInRange = new LinkedList<Item>();
for (int y = 0; y < height(); y++) {
for (int x = 0; x < width(); x++) {
Item it = myMap.getItemAt(cy + y, cx + x);
if (it != null)
itemsInRange.add(it);
}
}
// iterate over itemsInRange later
在過程中,它可以直接在命令式的方式轉化爲斯卡拉:
val itemsInRange = new ListBuffer[Item]
for (y <- 0 until height) {
for (x <- 0 until width) {
val it = tileMap.getItemAt(cy + x, cx + x)
if (!it.isEmpty)
itemsInRange.append(it.get)
}
}
,但我想這樣做的正確的,功能性的方式。
我推測在某種2D範圍上應該有map
的操作。理想情況下,map
將執行一個函數,該函數將獲得x
和y
作爲輸入參數並輸出Option[Item]
。之後,我會得到類似Iterable[Option[Item]]
和flatten
的東西,它會產生Iterable[Item]
。如果我是對的,唯一缺少的難題就是以某種方式在2D範圍內進行地圖操作。
謝謝!看起來這正是我正在尋找的!這些「產量」的東西看起來很有希望! – GreyCat