假设我有一个三边三角的三角形。 s1,a1,s2,a2,s3,a3和我想通过triangle.new
来初始化它以下是我的代码:
module Triangle
class Triangle
attr_accessor :s1, :a1, :s2, :a2, :s3, :a3
def initialize(s1, a1, s2, a2, s3, a3)
@s1 = s1
@a1 = a1
.
.
.
end
end
end
现在这是我的问题。我希望能够处理缺少角度或边的三角形。我玩过可选参数,但是如果你给我四个数字,我不知道哪些是边,哪些是角。最好的办法是需要六个数字,然后用triangle.new(5,nil,6,nil,9,nil)
之类的东西来调用它们吗?或者有更好的方法吗?
答案 0 :(得分:3)
为什么不将选项的散列传递给initialize方法,如下所示:
class Triangle
attr_accessor :s1, :a1, :s2, :a2, :s3, :a3
def initialize(options)
@s1 = options[:s1]
@a1 = options[:a1]
.
.
.
end
end
你可以这样做:
Triangle.new({:s1 => 5, :s2 => 6, :s3 => 9})