2012-07-30 34 views
5

什么不对这个set/getRuby类的set/get

class Pupil 
    def name 
    @name 
    end 

    def name=(name) 
    @name = name 
    end 

    def age 
    @age 
    end 

    def age=(age) 
    @age 
    end 
end 

而且在相同的,如果有一个子类有3个参数,姓名,年龄,性别,只会在孩子的一套get方法的性别。你能不能显示set/get方法并在子类中初始化。

+4

'name'是罚款。 '年龄='不会做它应该做的。 – 2012-07-30 06:51:13

+0

谢谢Sergio Tulentsev。 – Selvam 2012-07-31 03:13:37

回答

13
def age=(age) 
    @age 
    end 

应该

def age=(age) 
    @age = age 
    end 

您也可以使你的代码美丽更换get/set方法与attr_accessor本身提供的getter/setter

class Pupil 
    attr_accessor :age,:name 
end 
+0

@Selvam,继续? – PriteshJ 2012-07-31 06:17:32

+0

PriteshJ。谢谢。我解决了它。 (其实,我编辑额外的问题到我原来的问题。) – Selvam 2012-08-01 02:41:25

+0

好吧,'attr_accessor'是我一直在寻找。你在哪里可以在官方文档中找到这些信息作为学习Ruby的人?我一直在浏览http://ruby-doc.org/,但是它几乎没有在'Module'(而不是'Class')下面提到它,甚至没有提及像属性,getter,setter这样的术语......它是一种很难从那里学习这些概念。基本上,我正在寻找官方Python教程的Ruby等价物 - https://docs.python.org/3/tutorial/。 – metakermit 2017-08-31 16:07:58

1

你忘了@age = age

+0

谢谢Phil Aquilina。 – Selvam 2012-07-31 03:13:04