为什么需要在initialize()ru​​by中使用显式self

时间:2016-05-24 15:24:45

标签: ruby

我不明白为什么&= 39;属性='初始化内部应该有自己的前缀。

'名称'方法不需要使用前缀self来调用'属性'方法

class A
 attr_accessor :attributes

  def initialize attrs ={}
    self.attributes = attrs
  end

  def name 
    puts attributes
  end
end

a = {"name" => "someone"}
b = A.new a

b.name

输出{"名称" => "有人"}

如果self.attributes = attrs更改为attributes = attrs 输出将为零

1 个答案:

答案 0 :(得分:1)

如果您使用attributes = attrs,则只需将attrs分配给本地变量attributes,就像将attrs分配给some_other_var一样。通过在attributes前加self.,您可以指定需要使用访问者。