Tengo una matriz 2d de tipo booleano (no importante) Es fácil de iterar sobre la matriz en estilo no funcional. ¿Cómo hacerlo estilo FP?2d iteración de matriz scala
var matrix = Array.ofDim[Boolean](5, 5)
por ej, me gustaría recorrer todas las filas de una columna dada y devolver una lista de int que se correspondería con una función específica. Ejemplo: para la columna 3, repita las filas 1 a 5 para devolver 4, 5 si la celda en (4, 3), (5, 3) coincide con una función específica. Thx v mucho
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
}
Creo que su sol devolvería una matriz si la estructura inicial es una matriz de 2d? – jts
Ah, otra diferencia es que estaba pensando en filtrar directamente en la matriz 2d, pero al hacerlo, estoy perdiendo el índice de la fila: val children = matrix.filter (row => row (nodeIndex)) que devuelve 2 matrices 1d - pero no sé cuál – jts
No realmente, la estructura en la que hago es un Rango, no una Matriz (como lo eran los índices que quería en el salida). El tipo de resultado es IndexedSeq [Int] y resulta ser un Vector. Simplemente haz .toList si quieres una lista, pero Vector es generalmente una estructura mejor que List. –