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

Responder a