2012-07-30 11 views
5

Co jest nie tak z tym set/get?Zestaw klasy Ruby/get

class Pupil 
    def name 
    @name 
    end 

    def name=(name) 
    @name = name 
    end 

    def age 
    @age 
    end 

    def age=(age) 
    @age 
    end 
end 

Dalej to samo, jeśli nie było dziecko z klasy 3 argumenty, imię, wiek, płeć, będzie zbiorem sposób dostać się do płci dziecka tylko. Czy możesz pokazać metodę set/get i zainicjować w klasie potomnej.

+4

'name' jest w porządku. 'age =' nie robi tego, co powinno. –

+0

Dziękuję Sergio Tulentsev. – Selvam

Odpowiedz

13
def age=(age) 
    @age 
    end 

powinny być

def age=(age) 
    @age = age 
    end 

Można również dokonać kod piękny zastępując get/set attr_accessor która sama stanowi getter/setter

class Pupil 
    attr_accessor :age,:name 
end 
+0

@Selvam, śmiało? – PriteshJ

+0

PriteshJ. Dziękuję Ci. Rozwiązałem to. (Właściwie edytuję dodatkowe pytanie na moje oryginalne pytanie.) – Selvam

+0

OK, 'attr_accessor' jest tym, czego szukałem. Gdzie znajdziesz tę informację w oficjalnej dokumentacji jako osoba ucząca się Ruby? Przeglądałem http://ruby-doc.org/, ale prawie nie wspomina o tym w "Module" (nie "Class") i nawet tam nie wymienia takich pojęć jak property, getter, seter ... To rodzaj ciężko się nauczyć tych koncepcji. Zasadniczo szukam odpowiednika Ruby oficjalnego samouczka w języku Python - https://docs.python.org/3/tutorial/. – metakermit

1

Nie pamiętasz ustawić @age = age.

+0

Dziękuję Phil Aquilina. – Selvam