gpt4 book ai didi

arrays - 为二维数组编写迭代器

转载 作者:行者123 更新时间:2023-12-03 19:37:37 25 4
gpt4 key购买 nike

我正在尝试为二维数组编写迭代器。以下是我想出的。

  def rowsTest() {
val array = Array(
Array(9, 11, 4, 89),
Array(7, 62, 34, 2),
Array(3, 4, 5, 12),
Array(13, 4, 5, 12),
Array(3, 24, 5, 12),
Array(3, 4, 35, 12)
)
def rows: Iterator[Iterator[Int]] = {
new Iterator[Iterator[Int]] {
private var rowIndex = 0

def hasNext: Boolean = rowIndex < 6

def next: Iterator[Int] = {
val rowIterator = new Iterator[Int] {
private var columnIndex = 0

def next: Int = {
val p = array(columnIndex)(rowIndex)
columnIndex += 1
println("ColIndex = "+ columnIndex.toString)
p
}

def hasNext: Boolean = columnIndex < 4
}
rowIndex += 1
println("RowIndex = "+ rowIndex.toString)
rowIterator
}
}
}
for(row <- rows; elem <- row)
println(elem)
}

上面的代码在运行时跳过了第一行,还给出了 ArrayIndexOutOfBoundsException当所有元素都被打印出来。你能帮我弄清楚我哪里出错了吗?

谢谢,
悉达多·雷纳。

最佳答案

下面的代码怎么样?

val array = Array(Array(1,2,3),Array(4,5,6),Array(7,8,9))
array.view.flatten.iterator

它有效,如在 REPL 中测试的那样。虽然我不知道我是否通过“ View ”实现了我的意图。欢迎提出任何意见。

编辑

我忘了作者想要一个嵌套的迭代器。
array.iterator.map(_.iterator)

这当然可以在没有“ View ”且没有开销的情况下工作。

关于arrays - 为二维数组编写迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5353160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com