我还是Ruby的新手,我在其中一项任务中遇到了麻烦。
精灵生活在微小的灯中,只是出来给予祝福。使用指示精灵是否在灯中的数据更新您的班级。包括一个适当更新精灵的enter_lamp和exit_lamp实例方法。每当精灵退出灯泡时,它应该打印“在这里考虑你的愿望!”当精灵回到灯具时,应打印出“再见”。首次创建时,精灵应该从灯内开始。
更新您的驱动程序代码以测试您的工作。
class Genie
attr_accessor :name
attr_reader :age
def initialize(name, age)
@name = name
@age = age
@enter_lamp = enter_lamp
@exit_lamp = exit_lamp
end
def exit_lamp
puts "#{name} is here to consider your wish!"
end
def enter_lamp
puts "Goodbye for now."
end
end
anything = Genie.new("Leonardo", 85)
anything.name = "Michael"
答案 0 :(得分:2)
实例方法和变量由类的实例控制,不在实例之间共享。类方法和变量由Class控制,并影响所有实例。
例如,“人”对象的实例变量可能包含年龄,名称,头发颜色或眼睛颜色作为实例变量。这是我们都拥有的东西,我们都有独特的价值(至少,我们并不总是有相同的价值)。
所以鲍勃20岁,黑发,莎莉90岁,头发灰白。
如果我改变Bob的头发颜色,Sally的头发不会改变。
将此与一个类变量进行对比,该变量在所有实例中都是完全共享的。
所以Bob和Sally都有一个他们眼睛的类变量 - 因为他们和其他每个人都有两个。
如果我想将其改为3只眼睛,我必须改变人类DNA(人类),并且(在OOP世界中)所有人类将有3只眼睛。