Ruby中的attr_访问器是什么?

我很难理解Ruby中的attr\u访问器
有人能给我解释一下吗

假设您有一个classPerson

班级人员
终止
person=person.new
person.name#=>没有方法错误

显然,我们从未定义过方法名称。让我们这样做吧

班级人员
定义名称
@name#仅返回实例变量@name
终止
终止
person=person.new
person.name#=>无
person.name=“Dennis”#=>没有方法错误

啊哈,我们可以读名字,但这并不意味着我们可以指定名字。这是两种不同的方法。前者称为读卡器,后者称为写卡器。我们还没有创造作家,所以让我们这样做吧

班级人员
定义名称
@名字
终止
def名称=(str)
@name=str
终止
终止
person=person.new
person.name='Dennis'
person.name#=>“丹尼斯”

太棒了。现在我们可以使用reader和writer方法编写和读取实例变量@name。除了,这是如此频繁,为什么每次都要浪费时间写这些方法呢?我们可以做得更容易

班级人员
属性读取器:名称
作者:姓名
终止

即使这样也会重复。当您需要读写器时,只需使用访问器

班级人员
属性存取器:名称
终止
person=person.new
person.name=“丹尼斯”
person.name#=>“丹尼斯”

同样的道理!猜猜看:person对象中的实例变量@name将被设置为与手动设置时一样,因此您可以在其他方法中使用它

班级人员
属性存取器:名称
def问候语
“你好{@name}”
终止
终止
person=person.new
person.name=“丹尼斯”
person.greeting#=>“你好,丹尼斯”

就这样。为了了解attr\u readerattr\u writerattr\u accessor方法实际上是如何为您生成方法的,请阅读其他答案、书籍和ruby文档

发表评论