用编写setter和getter方法的长期经典方式表达attr_accessor?

时间:2012-07-27 01:17:32

标签: 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

1 个答案:

答案 0 :(得分:0)

您在重写版本中使用@name来完成一些不同的任务。有时它会存储名称,有时会存储legsarms的元组。

你真正想要的是更加冗长:

def name=(name)
  @name = name
end

def name()
  @name
end

def legs()
  @legs
end

def arms()
  @arms
end

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