在Ruby中初始化类时,是否将实例变量设置为等于变量?

时间:2014-09-29 08:24:07

标签: ruby class variables

为什么在ruby中,当你对一个类进行initiazlize时你是否将实例变量设置为等同于同名的变量?

def initialize(number)
    @number = number
end

1 个答案:

答案 0 :(得分:3)

我们这样做是为了让新创建的对象(不是类!带有initialize和@vars,初始化刚刚用new()方法创建的对象!)会记住number的值。

尝试使用这个:

def initialize(number)
end

这会得到一个数字,但对它没有任何作用。当这个inializer结束时,创建的对象将不记得'number'是什么。

下面:

def initialize(number)
  @foo = 5
  @bar = number
end

新创建的对象将记住@foo中的5和@bar中的数字。

将@variable命名为参数的想法只是为了让它更容易。在上面的例子中,很难猜出bar的含义。相反,如果我将@bar重命名为@number,那么很明显它会保留...数字。

def initialize(number)                         def initialize(number)
  @bar = number          <-same thing->          @number = number
end                    just different name     end