1

我已经实现了一个允许以不同方式初始化自身的类。

第一种方式:创建对象,稍后设置属性。

object = MyClass.new
object.name = 'Object'

第二种方式:将属性哈希传递给对象构造函数。

MyClass.new(:name => 'Object')

第三种方式:将块传递给对象构造函数。

MyClass.new do |object|
  object.name = 'Object'
end

我受到ActiveModel的启发

我一直认为它是如此微不足道,以至于有人可能已经将它实现为一个单独的 gem,或者可能有一些内置的 Ruby 解决方案?

4

2 回答 2

1

我不太确定这是否是您正在寻找的,但您可能对注入gem 感兴趣。

于 2012-05-14T11:41:02.303 回答
1

我用这个(不是真正的宝石,但仍然)......

https://github.com/guerilla-di/tracksperanto/blob/master/lib/tracksperanto/block_init.rb

当您将该模块包含到一个类中时,您将获得默认构造函数。

它真的很小,因此您可以将其放入您的项目中并完成。

于 2012-05-14T14:44:59.470 回答