Hola !,
tener 20 variables numeradas de 1 a 20.... me suena más a un problema
de diseño.... sin agregar la complejidad de meterse en
metaprogramación o continuar con el problema de diseño y agregar 20
métodos para hacer la suma (?!?!?!?!) ..... porque no hacer una
pequeña reingenieria y poner las 20 variables en un array ???.... la
solución sería más simple y elegante creo.... por ejemplo se me
ocurre:
class Subtareas
def initialize
@tareas = []
end
def add_tarea(value)
@tareas << value.dup
end
# suma las tareas de una posicion
def sum(index)
@tareas.inject(0) {|m, o| m + o[index] }
end
end
s = Subtareas.new
s.add_tarea([1,2,3,4,5])
s.add_tarea([1,2,3,4,5])
puts s.sum(2) # > 6
--
:: nelson ::
artesano de software
http://netflux.com.ar
2008/5/29 Lautaro Bonetto <[EMAIL PROTECTED]>:
> Muchisimas gracias a TODOS.!!!
>
> Toda la info que me pasaron me ayudó muchísimo.
> En mi cabeza estaba tratando de hacer algo como:
>
> def tarea_sum (num)
> tot = 0
> subtareas.each do |st|
> tot += eval("st.tarea#{num}", binding , __FILE__, __LINE__)
> end
> return tot
> end
>
> (0..20).each do |nro_tarea|
> define_method("tarea%d_sum" % nro_tarea) { tarea_sum(nro_tarea); }
> end
>
> Pero voy a estudiar las otras alternativas, ya que no las conocía.
>
> Gracias de nuevo y saludos.
>
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
>
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar