viernes, 6 de febrero de 2009

Ampliar la funcionalidad de una clase existente

Hola, estamos viendo el ruby para PC, y hoy les voy a pasar un truco para agregarle funcionalidad a una clase ya existente en el lenguaje (también otra que se haya definido de la manera que sea, puede ser extendida )

Supongamos que no nos gusta que el metodo para convertir a entero de la clase String, se llame to_i, y nos parece mejor idea que se llame to_integer



class String
def to_integer
to_i
end
end

print "99".to_integer + 1, "\n"



Lo que hicimos fue definir de manera parcial la clase String, esto es, definirle los métodos que queramos a String, obviamente manteniendo también los métodos originales de la clase String




Bueno, esto fue ruby para PC, y espero que les haya gustado, chau

1 comentario:

Gonzalo dijo...

Saludos soy un novato en el mundo de ruby, encontré un código parecido a lo que se refiere el tema lo que no entiendo es esta parte del codigo.

def to_s
'Perceptron: Pesos = [' + @pesos.join(', ') + '], Entradas = [' + @entradas.join(', ') + '], Rec = ['+ @rec +'] Salida = [' + salida.to_s + '] '
end

( esa variable salida.to_s llama al método salida el cual se supone que retorna el resultado numérico como letra la duda mía es como sabe que método llamar por que se supone que nosotros reescribimos el método en este archivo. Bueno no si entiendas lo que trato explicar en realidad me confunde esta parte o lo toma como distintos, espero que me ayude con mi dilema.

ah esta bueno el blog recién lo ubique buscando en google, Saludos.

def salida
return @salida unless @salida.nil?
@salida = 0.0
@entradas.each_index do |i|
@salida += @entradas[i] * @pesos[i]
end
@salida = @salida>1 ? 1 : 0
end