我有一个类型为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)
关于什么
(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)
如果您也愿意,您可以在调整器中移动打印,如果您希望与示例中的完全一样,则可以反转列表
| 归档时间: |
|
| 查看次数: |
6527 次 |
| 最近记录: |