我正在处理一个Chart
类,它有一个margin
参数,可以保存:top
,:bottom
,:right
和:left
值。我的第一个选择是将margin
设为setter并设置如下值:
# Sets :left and :right margins and doesn't alter :top and :bottom
chart.margins = {:left => 10, :right => 15}
这很好,因为它显然是一个setter,但是,经过一番思考,我认为它也可能令人困惑:用户可能认为边距只包含
:left
和:right
值,这是不对的。另一种选择是消除=
并使其成为一种普通方法:chart.margins(:left => 10, :right => 15)
使用这种语法,很容易知道发生了什么,但它不是一个标准设置器,并且与
margins
getter冲突。还有另一个选择:chart.margins(:left, 10)
chart.margins(:right, 15)
我不知道该怎么想。对我来说,很明显这个方法是一个setter,但是这次我不能用一个调用设置多个值,getter又有问题了。我对ruby比较陌生,还不习惯所有的习惯用法。那么,你们觉得呢?哪一个是最好的选择?
最佳答案
您还可以创建一个margin类来享受以下清晰的语法:
class Margin
attr_accessor :left, :right, :top, :bottom
...
end
class Chart
attr_accessor :margins
...
end
chart.margins.left = 10
puts chart.margins.right