2012-07-30 19 views
5

¿Qué tiene de malo este set/get?Ruby class set/get

class Pupil 
    def name 
    @name 
    end 

    def name=(name) 
    @name = name 
    end 

    def age 
    @age 
    end 

    def age=(age) 
    @age 
    end 
end 

Además en el mismo, si había una clase hija con 3 argumentos, nombre, edad, sexo, sería el método get set en el niño para el sexo solamente. ¿Puedes mostrar el método set/get e inicializar en la clase hija?

+4

'name' está muy bien. 'age =' no hace lo que se supone que debe hacer. –

+0

Gracias Sergio Tulentsev. – Selvam

Respuesta

13
def age=(age) 
    @age 
    end 

debería ser

def age=(age) 
    @age = age 
    end 

También puede hacer que el código hermosa reemplazando get/set con attr_accessor que a su vez proporciona un captador/definidor

class Pupil 
    attr_accessor :age,:name 
end 
+0

@Selvam, adelante? – PriteshJ

+0

PriteshJ. Gracias. Lo resolví (En realidad, edito la pregunta adicional a mi pregunta original.) – Selvam

+0

OK, 'attr_accessor' es lo que estaba buscando. ¿Dónde encuentra esta información en la documentación oficial como alguien que está aprendiendo Ruby? He estado mirando a través de http://ruby-doc.org/, pero apenas menciona esto en 'Module' (no' Class') e incluso no menciona términos como property, getter, setter ... Es una especie de Es difícil aprender estos conceptos desde allí. Básicamente, estoy buscando el equivalente Ruby del tutorial oficial de Python - https://docs.python.org/3/tutorial/. – metakermit

1

Olvidó establecer @age = age.

+0

Gracias Phil Aquilina. – Selvam