ruby - 如何在 Ruby 中为类变量编写编写器方法?

标签 ruby oop class metaprogramming

我正在研究 Ruby,我的大脑突然卡住了。

在下面的代码中,我将如何编写“self.total_people”的类编写器方法?我正在尝试“计算”类“Person”的实例数。

    class Person

     attr_accessor :name, :age

 @@nationalities = ['French', 'American', 'Colombian', 'Japanese', 'Russian', 'Peruvian']

 @@current_people = []

 @@total_people = 0

def self.nationalities #reader
   @@nationalities
 end

 def self.nationalities=(array=[]) #writer
   @@nationalities = array
 end

 def self.current_people #reader
   @@current_people
 end

 def self.total_people #reader
   @@total_people
 end

def self.total_people #writer
  #-----?????
end



 def self.create_with_attributes(name, age)
   person = self.new(name)
   person.age = age
   person.name = name
   return person
 end


 def initialize(name="Bob", age=0)
   @name = name
   @age = age
   puts "A new person has been instantiated."
   @@total_people =+ 1
   @@current_people << self
 end

最佳答案

您可以通过将等号附加到方法名称的末尾来定义一个:

def self.total_people=(v)
  @@total_people = v
end

您将所有实例都放在@@current_people 中,您可以更准确地定义 total_people:

def self.total_people
  @@current_people.length
end

并删除所有与@@total_people 相关的代码。

关于ruby - 如何在 Ruby 中为类变量编写编写器方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2827875/

相关文章:

Java抽象返回值

ruby-on-rails - 尝试验证日期

java - 在 clojure 中使用 java 结构

java - ArrayList中对象属性值出现的频率

java - 从外部类更改实例变量值?

Python - 在类中动态添加方法的推荐方法

Python 类语法错误

ruby - 无法使用另一个密码实例解密加密消息

ruby-on-rails - Heroku Migrate 数据库更改

css - Ruby:解析明文的结构化 block