2d scala数组迭代

jts*_*jts 6 arrays scala

我有一个类型为boolean的二维数组(不重要)很容易以非功能样式迭代数组.怎么做FP风格?

var matrix = Array.ofDim[Boolean](5, 5) 
Run Code Online (Sandbox Code Playgroud)

对于ex,我想迭代给定列的所有行并返回与特定函数匹配的int列表.示例:对于第3列,如果(4,3),(5,3)处的单元格与特定函数匹配,则遍历第1行到第5行以返回4,5.太多了

def getChildren(nodeId: Int) : List[Int] = {
    info("getChildren("+nodeId+")")

    var list = List[Int]()
    val nodeIndex = id2indexMap(nodeId)

    for (rowIndex <- 0 until matrix.size) {
      val elem = matrix(rowIndex)(nodeIndex)
      if (elem) {
        println("Row Index = " + rowIndex)
        list = rowIndex :: list
      }
    }

    list
  }
Run Code Online (Sandbox Code Playgroud)

Did*_*ont 4

关于什么

(1 to 5) filter {i => predicate(matrix(i)(3))}
Run Code Online (Sandbox Code Playgroud)

你的职能在哪里predicate

请注意,使用 (5,5) 索引初始化的范围是从 0 到 4。

更新:根据您的示例

def getChildren(nodeId: Int) : List[Int] = {
  info("getChildren("+nodeId+")")
  val nodeIndex = id2indexMap(nodeId)

  val result = (0  until matrix.size).filter(matrix(_)(nodeIndex)).toList
  result.forEach(println)
  result
}
Run Code Online (Sandbox Code Playgroud)

如果您也愿意,您可以在调整器中移动打印,如果您希望与示例中的完全一样,则可以反转列表