gpt4 book ai didi

Ruby setter 成语

转载 作者:数据小太阳 更新时间:2023-10-29 07:42:17 27 4
gpt4 key购买 nike

我正在处理一个 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)

使用这种语法,很容易弄清楚发生了什么,但它不是标准的 setter 并且与 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

关于Ruby setter 成语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1819517/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com