2009/7/6 Cristhian Boujon <[email protected]>: > muchas gracias a todos, era evidente que algo no me estaba cerrando yo creí > que yield devolvía un valor al bloque pero también puede evaluarlo y todo > eso. > acá mi versión > > def select(array) > otro_array = [] > array.each do |elem| > otro_array << elem if yield(elem) > end > return otro_array > end > > > pero creo que es cierto lo que dice Eureliano, creo que se entiende mejor si > se usa el &block, lástima que sea más ineficiente y que casi ni se use.
Ehhhhh "casi ni se use"? Es bastante común que se use esa notación, y hay casos donde no tenés más remedio que usarla. Para los casos simples (como sería implementar Enumerable#select, o #map, o ese tipo de cosas) es mejor usar yield (por la performance. Pero usar la notación &block tampoco es "inherently evil" ni nada. Otra cosa, la notación &block también ayuda a la documentación. Si hay un yield tirado en el medio del método, no hay nada que documente al leer el prototipo del método que ese método acepta un bloque. No hay una "silver bullet", a veces una notación es mejor que la otra. A veces es al revés. El que quiera "Only One True Way", que se vaya a programar en python :P -foca _______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
