【发布时间】:2016-05-12 18:07:21
【问题描述】:
我刚开始学习 Scala,尝试编写一个简单的游戏来学习它的语法和一些基本规则。如果有人可以帮助我解决一个简单的问题,我将不胜感激。我创建了用“。”填充的简单板。现在我想换一个“。”在某个索引上并放在那里“X”。在java中它看起来像这样:
board[col][row] = symbol;
这是棋盘部分:
val board = {
collection.mutable.ArrayBuffer[String]()
collection.mutable.ArrayBuffer.fill(cols, rows)(".")
}
def show(): Unit = {
board.foreach(x => println(x.mkString))
}
def setField(col:Int, row:Int, fieldSymbol:String): Unit = {
//fieldSymbol on index, which is (col*row) as it's 1d array
//thought board.apply(col*row): fieldSymbol might work but it's not
//correct I guess
}
任何帮助将不胜感激。提前感谢您的建议。
【问题讨论】:
-
使用
board(i)访问集合的第i 个值(与Java 的[i]相同)。 -
谢谢,没想到这么简单。
-
collection.mutable.ArrayBuffer[String]()这将创建一个空数组(因为您不对其进行任何操作),然后将其丢弃。您只需要fill行 -
让我再问一些问题,这样我就不会创建很多垃圾话题了。当我有
(cols, rows)时,这意味着我有类似二维数组的东西吗?比如,我可以board(col, row) = fieldSymbol吗? -
你有一个二维数组,但它表示为一个数组数组。它只是 Java(实际上是一个 Scala
Array是一个 JavaArray)。所以你需要board(col)(row)(我正在工作,所以我不会成为实时的进一步问答服务,如果需要,可以发布“适当”的问题(或查阅 Scala 教程!)
标签: scala arraybuffer