如何处理Ruby中三角形类的初始化方法

时间:2011-12-20 15:16:00

标签: ruby

假设我有一个三边三角的三角形。 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)之类的东西来调用它们吗?或者有更好的方法吗?

1 个答案:

答案 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})