2012-07-27 20 views
1

如何使用常规方法样式( 长编码方式)来表示属性方法来定义它们?用setter和getter方法的长期经典方式表达attr_accessor?

attr_accessor :name 
attr_writer :name 
attr_reader :legs, :arms 

我自己试试下面。如果我错了,那么通过重新输入 来纠正它。

我的回答是:

def name=(name) 
    @name = name 
    end 
    def name=(legs,arms) 
    @name = legs, arms 
    end 

    def name 
    @name 
    end 
+0

由于'attr_accessor'等同于调用'attr_writer'&'attr_reader',因此'attr_accessor'&'attr_writer' /'attr_reader'具有相同的属性是多余的。 – 2012-07-27 04:35:35

回答

0

您使用@name在您重新编写的版本,几个不同的任务。有时它存储名称,有时它存储legsarms的元组。

你真正想要的是远更详细:

def name=(name) 
    @name = name 
end 

def name() 
    @name 
end 

def legs() 
    @legs 
end 

def arms() 
    @arms 
end 

这是你永远要分配给legsarms一件好事,因为这会是两个毫无意义的方法。

+0

感谢您的回复,我会尝试重新编写此代码并告诉我它是否正确:)我会写一个答案,以便我可以复制并粘贴我的代码。 – RubyBeginner 2012-07-27 01:39:44

+0

谢谢你,我完成了。我正在观看Lynda.com脚本的构建,当教练开始编写实际的程序代码时,我觉得这些属性或方法或哈希值都不在我的内部,看起来像是完全不同的语言。你能告诉我如何编写一个简单的命令行脚本来允许用户输入餐厅名称及其类型和平均价格吗?然后获得这些返回值以及搜索添加的餐馆的能力,而无需将任何信息保存或存储到任何仅使用计算机上的记忆体进行一次会话使用的文件? – RubyBeginner 2012-07-27 07:26:46

+0

这是一个比适合评论更大的问题。 (b)将输出写入用户(c)将餐厅的数据存储到类或元组中(d)将餐厅数据保存到你的类的数组中或元组(e)从你的类或元组数组中检索餐厅数据。几乎所有问题都可以通过将其分解为更小的碎片来改善。 – sarnold 2012-08-01 20:27:26