如何处理Class.new的可选参数

时间:2017-11-16 08:35:55

标签: ruby

我使用Class.new方法创建动态类。但有时我用参数调用该方法来创建一个继承的类 - 有时没有。

选项1:

newclass = Class.new do
  ...
end

选项2:

newClass = Class.new(p) do
  ...
end

新课程的主体是相同的。但我无法使用未定义Class.new(p)来呼叫p。所以我必须创建一个if语句然后用参数调用Class.new或者没有这意味着我有重复创建类的代码,这是不理想的,因为我的代码中的每次更改都要做两次。我怎么能绕过这个?

1 个答案:

答案 0 :(得分:1)

您可以抽象Class.new电话,并将该区域留在一个位置。像这样:

def create_me_a_class(superklass = Object, &block)
  Class.new(superklass, &block)
end

newclass = create_me_a_class(p) do
  def my_method
    # whatever
  end
end