Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby:有没有使用attr\u initialize方法的gem?_Ruby_Constructor_Initializer_Attr Accessor - Fatal编程技术网

Ruby:有没有使用attr\u initialize方法的gem?

Ruby:有没有使用attr\u initialize方法的gem?,ruby,constructor,initializer,attr-accessor,Ruby,Constructor,Initializer,Attr Accessor,是否有一些流行的ruby gem定义了attr_initialize类方法,其行为如下: attr_initialize :attr1, :@attr2, [:@attr3, 1] do |arg4| post_initialization(arg4) end 将评估为相当于: attr_accessor :attr1 def initialize(attr1, attr2, attr3 = 1, arg4 = nil) @attr1 = attr1 @attr2 = attr2

是否有一些流行的ruby gem定义了attr_initialize类方法,其行为如下:

attr_initialize :attr1, :@attr2, [:@attr3, 1] do |arg4|
  post_initialization(arg4)
end
将评估为相当于:

attr_accessor :attr1

def initialize(attr1, attr2, attr3 = 1, arg4 = nil)
  @attr1 = attr1
  @attr2 = attr2
  @attr3 = attr3
  post_initialization(arg4)
end

你不需要那个。只需写下如下内容:

attr_accessor :attr1, :attr2, :attr3

def initialize(*attrs)
  @attr1, @attr2, @attr3 = attrs
  post_initialization attrs.last
end
对我来说,它看起来不像是太多的代码。

我们的关系很近


它有意不处理默认参数、可选参数或赋值以外的参数–如果您需要,您可能只需要定义一个常规方法。

您是对的,它没有那么多代码。def attr1@attr1 end与attr_reader:attr1也没有多少代码。因此,我将从这个函数中受益,因为代码变得更加清晰