在红宝石中,我经常发现自己在写:
class Foo def initialize(bar,baz) @bar = bar @baz = baz end << more stuff >> end
甚至
class Foo attr_accessor :bar,:baz def initialize(bar,baz) @bar = bar @baz = baz end << more stuff >> end
我总是很想尽可能地最小化样板,所以有更多的惯用的方法来创建红宝石的对象?
解决方法
一个选项是可以从Struct继承您的类定义:
class Foo < Struct.new(:bar,:baz) # << more stuff >> end f = Foo.new("bar value","baz value") f.bar #=> "bar value" f.baz #=> "baz value"