命名方法作为变量调用方法Ruby

时间:2014-01-05 09:33:07

标签: ruby attr-accessor

嗨,我非常喜欢初学者。

我想我理解attr_accessor是如何工作的(下图)。而“setter”是name=(name)方法。我知道那个方法等同于赋值:name = "john"。因为“=”是一个接受参数的方法,并将该参数分配给任何调用它的对象。 (虽然我不明白“名称”如何被视为一个对象,因为它被分配给一个对象)

所以我的问题是:如何指定一个调用方法作为方法名称的变量?感觉就像我错过了什么......

class Person
  def name
    @name
  end

  def name=(name)
    @name = name
  end
end

1 个答案:

答案 0 :(得分:1)

  

所以我的问题是:如何将调用方法的变量指定为   方法名称?感觉就像我错过了什么......

你没有。在此代码中

def name=(name)
  @name = name
end

name= 不是调用方法name的变量=。该方法的名称name=

编辑:

在上面的代码段中,def与终止end配对构成了方法定义。

def method_name(param1, param2)
  # method body
end

在与def相同的行上,只能有方法名称,可选括号和参数列表。根据定义,在该行中具有“调用方法的变量”将是非法的。因此,在您的代码name=中是方法名称。