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

Responder a