0

嗨,我是一个初学者。

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

所以我的问题是:如何将调用方法的变量分配为方法名称?感觉好像错过了什么。。

class Person
  def name
    @name
  end

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

1 回答 1

1

所以我的问题是:如何将调用方法的变量分配为方法名称?感觉好像错过了什么。。

你没有。在这段代码中

def name=(name)
  @name = name
end

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

编辑:

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

def method_name(param1, param2)
  # method body
end

在同一行中def只能有方法名称、可选括号和参数列表。根据定义,在该行中具有“调用方法的变量”是非法的。所以在你的代码name=中是方法名称。

于 2014-01-05T09:45:56.473 回答