Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 用编写setter和getter方法的经典方法来表达attr_访问器?_Ruby - Fatal编程技术网

Ruby 用编写setter和getter方法的经典方法来表达attr_访问器?

Ruby 用编写setter和getter方法的经典方法来表达attr_访问器?,ruby,Ruby,如何使用普通方法样式表达属性方法 如何定义它们 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 在重

如何使用普通方法样式表达属性方法 如何定义它们

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

在重新编写的版本中,您正在使用
@name
执行一些不同的任务。有时存储名称,有时存储腿和臂的元组

您真正想要的是更详细的内容:

def name=(name)
  @name = name
end

def name()
  @name
end

def legs()
  @legs
end

def arms()
  @arms
end

这是一件好事,你永远不想分配给
,因为那将是另外两种毫无意义的方法。

谢谢你的回复,我会尝试重新编写此代码,并告诉我它是否正确:)我会写一个答案,这样我就可以复制和粘贴我的代码。谢谢你,我已经完成了。我在看Lynda.com脚本构建,当讲师开始实际的程序编码时,我觉得我学到的这些属性、方法或散列都不在里面,看起来像是一种完全不同的语言。您能告诉我如何编写一个简单的命令行脚本,允许用户输入餐厅名称及其类型和平均价格吗?然后获取这些信息的返回值,并能够搜索添加的餐厅,而无需将任何信息保存或存储到任何文件中,仅使用计算机上的内存进行一次会话使用?这是一个比评论更大的问题。将较大的问题分解为较小的问题:(a)从用户获取输入(b)向用户写入输出(c)将餐厅数据存储到类或元组中(d)将餐厅数据保存到类或元组数组中(e)从类或元组数组中检索餐厅数据。几乎每一个问题都可以通过将其分解成更小的部分来解决。对于同一个属性,拥有
attr\u访问器
attr\u编写器
/
attr\u读取器
是多余的,因为
attr\u访问器
相当于同时调用
attr\u编写器