在初始化程序中使用另一个对象的构造函数?

时间:2016-11-25 16:14:40

标签: ruby

考虑以下代码:

  Campus = ImmutableStruct.new(:id, :name, :timezone) do
    def hash; id end
  end

  Merchant = ImmutableStruct.new(:id, :name, :campus) do
    def hash; id end
  end

请注意hash方法的重复。我想用新类ImmutableStructWithId删除此重复项。这个新类允许重写上面两行:

Campus = ImmutableStructWithId.new(:id, :name, :timezone)
Merchant = ImmutableStructWithId.new(:id, :name, :campus) 

如果 ruby​​的初始化程序像工厂函数一样工作(他们不会),我想要的就是以下内容:

class ImmutableStructWithId
  def initialize(*args)
    ImmutableStruct.new(*args) do
      def hash; id end
    end
  end
end

我知道上面的工作没有成功,因为初始化程序不会返回他们正在创建的对象,他们只是初始化它。但如果他们像工厂职能一样工作,上面就是我想做的事情。

在ruby中实现相同效果的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

IMO这应该适合你:

webpack-dev-server 'mocha!./testfile.js' --output-filename test.js --port 8081