嗨,我非常喜欢初学者。
我想我理解attr_accessor是如何工作的(下图)。而“setter”是name=(name)
方法。我知道那个方法等同于赋值:name = "john"
。因为“=”是一个接受参数的方法,并将该参数分配给任何调用它的对象。 (虽然我不明白“名称”如何被视为一个对象,因为它被分配给一个对象)
所以我的问题是:如何指定一个调用方法作为方法名称的变量?感觉就像我错过了什么......
class Person
def name
@name
end
def name=(name)
@name = name
end
end
答案 0 :(得分:1)
所以我的问题是:如何将调用方法的变量指定为 方法名称?感觉就像我错过了什么......
你没有。在此代码中
def name=(name)
@name = name
end
name=
不是调用方法name
的变量=
。该方法的名称为name=
。
编辑:
在上面的代码段中,def
与终止end
配对构成了方法定义。
def method_name(param1, param2)
# method body
end
在与def
相同的行上,只能有方法名称,可选括号和参数列表。根据定义,在该行中具有“调用方法的变量”将是非法的。因此,在您的代码name=
中是方法名称。