不了解实例方法或实例变量RUBY

时间:2016-10-29 23:28:33

标签: ruby

我还是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"

1 个答案:

答案 0 :(得分:2)

实例方法和变量由类的实例控制,不在实例之间共享。类方法和变量由Class控制,并影响所有实例。

例如,“人”对象的实例变量可能包含年龄,名称,头发颜色或眼睛颜色作为实例变量。这是我们都拥有的东西,我们都有独特的价值(至少,我们并不总是有相同的价值)。

所以鲍勃20岁,黑发,莎莉90岁,头发灰白。

如果我改变Bob的头发颜色,Sally的头发不会改变。

将此与一个类变量进行对比,该变量在所有实例中都是完全共享的。

所以Bob和Sally都有一个他们眼睛的类变量 - 因为他们和其他每个人都有两个。

如果我想将其改为3只眼睛,我必须改变人类DNA(人类),并且(在OOP世界中)所有人类将有3只眼睛。