我正在研究 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/