使用块初始化对象

是否可以使用块初始化对象,如下所示?

class Foo attr_reader :bar,:baz def initialize(bar,baz) @bar, @baz = bar, baz end end Foo.new do |bar, baz| # some logic to be implemented # @bar, @baz to be assigned end 

当然,你可以从initialize yield ,没有什么特别之处:

 class Foo attr_accessor :bar, :baz def initialize yield self end end Foo.new do |f| f.bar = 123 f.baz = 456 end #=>  

您还可以使用instance_eval在接收器的上下文中评估块:

 class Foo attr_accessor :bar, :baz def initialize(&block) instance_eval(&block) end end Foo.new do @bar = 123 @baz = 456 end #=> #