ruby - 红宝石。如何从所有类对象中收集所有类元素?
问题描述
我有一个任务,我有老班和小班。这是简化的代码:
class Animal
attr_accessor :name, :name_list
def initialize
@name = name
@name_list = []
end
def set_name
@name = gets
puts "My name is #{@name}"
@name_list.append(@name)
end
def self.show_all
puts "List of your animals names: #{@name_list}"
end
end
class Dog < Animal
end
class Cat < Animal
end
dog1 = Dog.new
dog1.set_name
cat1 = Cat.new
cat1.set_name
Animal.show_all
所以问题是:如果所有子类(猫和狗)都具有相同的元素 - 名称(动物类中的位置),我如何将它们全部收集到一个数组中?因为如果我只是将 name_list 放入 set_name def - 数组似乎是空的。有没有办法在不写类之外的另一个数组的情况下做到这一点?
解决方案
您需要创建name_list
一个类变量
class Animal
attr_accessor :name
@@name_list = []
def initialize
@name = name
end
def set_name
@name = gets
puts "My name is #{@name}"
@@name_list.push(@name.strip)
end
def self.show_all
puts "List of your animals names: #{@@name_list}"
end
end
推荐阅读
- c++ - 了解曲线全局逼近算法
- php - 如何在php中访问数组的元素
- .net - 如何在编译代码时插入图标?
- heroku - Net::SMTPAuthenticationError(530-5.5.1 Authentication Required app 无法在 heroku 上运行
- r - R:gsub/replace 仅在关键字出现之后出现的那些出现
- c++ - 调试器设置巨大的初始值 eclipse C++
- javascript - 在 useState 挂钩中设置状态后反应状态变量不准确
- groovy - 使用 Groovy 读取特定的 yaml 值
- python - Python pandas read_excel 方法 KeyError 'show'
- reactjs - 在 useEffect 挂钩中取消所有异步/等待任务以防止反应中的内存泄漏的正确方法是什么?