y para llamarlo se pondría eachAlumnos(){ ... } y no @arrayAlumnos.each() {...} como haríamos con un iterador normal.
Hola,
No me ha quedado claro si tu intención es reinventar la rueda de un
For Each de forma universal?, o crear varios métodos distintos PREDEFINIDOS para esa Class para que simulen un
For Each.
¿se trata sólamente de hacer lo mismo pero escribiendo (un poco) menos? xD
En mi opinión si "eachALGO" pretendes hacerlo genérico no tiene ni pies ni cabeza pues
.each es una extensión de una Colección mientras que
eachALGO no es nada y no podría ser lo mismo puesto que no puedes aplicarlo a ningún objeto, no sería un método de un objecto, sería un método, sin más, entonces no podrías utilizarlo de forma dinámica.
Aunque hace mucho que no programo en Ruby pero está claro que en un lenguaje ni usando Lambdas ni magia podrías instanciar métodos de forma dinámica de la manera en la que lo has planteado símplemente escribiendo "eachLOQUESEA" y que el método se crease por si solo, no, yo pienso que la única solución sería crear tu mismo los métodos necesarios (eachAlumnos() eachLoquesea()) cada uno por separado, con su nombre de método y sus instrucciones preestablecidas por ti dentro del Script, claro, y que cada método hiciese un
For Each, es decir, creas el método "eachALUMNOS" y haces un .each en el array que tú, préviamente, hayas declarado en las órdenes de dicho método.
Saludos!
Edito: O bien podrías hacer algo parecido a este método :
# -*- coding: UTF-8 -*-
days = [ "Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
]
def each(collection, &procedure)
procedure.call(collection)
end
each(days) {|var|print var}
sleep 5
Process.exit
__END__
Saludos