【问题标题】:Ruby class set/getRuby 类设置/获取
【发布时间】:2012-07-30 06:48:14
【问题描述】:

这个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 个参数的子类,名称、年龄、性别,那么子类中的 set get 方法是否仅用于性别。能否请您显示 set/get 方法并在子类中初始化。

【问题讨论】:

  • name 很好。 age= 没有做它应该做的事情。

标签: ruby get set


【解决方案1】:
def age=(age)
    @age
  end

应该是

  def age=(age)
    @age = age
  end

您还可以通过将 get/set 替换为 attr_accessor 来美化您的代码,attr_accessor 本身提供了一个 getter/setter

 class Pupil
   attr_accessor :age,:name
 end

【讨论】:

  • PriteshJ。谢谢你。我解决了。 (实际上,我将附加问题编辑为原始问题。)
  • 好的,attr_accessor 就是我要找的。作为学习 Ruby 的人,您在官方文档中哪里可以找到这些信息?我一直在查看ruby-doc.org,但它几乎没有在Module(不是Class)下提到这一点,甚至没有提到像property、getter、setter这样的术语……从那里学习这些概念有点困难.本质上,我正在寻找官方 Python 教程的 Ruby 等价物——docs.python.org/3/tutorial
  • 我已经回答了我自己的问题——在 ruby​​-lang.org 上有一个官方的 Ruby 快速入门——ruby-lang.org/en/documentation/quickstart
【解决方案2】:

你忘了设置@age = age

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-26
    • 2014-10-31
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    相关资源
    最近更新 更多