我已经实现了一个允许以不同方式初始化自己的类。
第一种方式:创建对象,稍后设置属性。
object = MyClass.new
object.name = 'Object'
第二种方式:将属性的哈希值传递给对象构造函数。
MyClass.new(:name => 'Object')
第三种方式:将块传递给对象构造函数。
MyClass.new do |object|
object.name = 'Object'
end
的启发
我一直在想,有些人可能已将它作为一个单独的gem实现,或者可能有一些内置的Ruby解决方案?
答案 0 :(得分:1)
我不确定这是否是你想要的,但你可能对injection宝石感兴趣。
答案 1 :(得分:1)
我用它(不是真正的宝石,但仍然)......
https://github.com/guerilla-di/tracksperanto/blob/master/lib/tracksperanto/block_init.rb
将该模块包含在类中时,您将获得默认构造函数。
它非常小,所以你可以把它放到你的项目中并完成。