class RDoc::Attr
由 #attr, #attr_reader, #attr_writer 或 #attr_accessor 创建的属性
属性
rw[RW]
该属性是可读的 ('R'),可写的 ('W'),还是两者都可 ('RW')?
公共类方法
new(text, name, rw, comment, singleton = false) 点击以切换源代码
创建一个新的 Attr
,其主体为 text
,name
,读/写状态为 rw
,以及 comment
。 singleton
将其标记为类属性。
调用父类方法
RDoc::MethodAttr::new
# File rdoc/code_object/attr.rb, line 25 def initialize(text, name, rw, comment, singleton = false) super text, name @rw = rw @singleton = singleton self.comment = comment end
公共实例方法
==(other) 点击以切换源代码
当属性的名称,singleton 和 rw 都相同时,它们是相等的
# File rdoc/code_object/attr.rb, line 36 def == other self.class == other.class and self.name == other.name and self.rw == other.rw and self.singleton == other.singleton end
add_alias(an_alias, context) 点击以切换源代码
在 context
中将 an_alias
添加为属性。
# File rdoc/code_object/attr.rb, line 46 def add_alias(an_alias, context) new_attr = self.class.new(self.text, an_alias.new_name, self.rw, self.comment, self.singleton) new_attr.record_location an_alias.file new_attr.visibility = self.visibility new_attr.is_alias_for = self @aliases << new_attr context.add_attribute new_attr new_attr end
aref_prefix() 点击以切换源代码
属性的 aref
前缀
# File rdoc/code_object/attr.rb, line 61 def aref_prefix 'attribute' end
definition() 点击以切换源代码
根据情况返回 attr_reader,attr_writer 或 attr_accessor。
# File rdoc/code_object/attr.rb, line 78 def definition case @rw when 'RW' then 'attr_accessor' when 'R' then 'attr_reader' when 'W' then 'attr_writer' end end
marshal_dump() 点击以切换源代码
转储此 Attr
以供 ri 使用。另请参阅 marshal_load
# File rdoc/code_object/attr.rb, line 102 def marshal_dump [ MARSHAL_VERSION, @name, full_name, @rw, @visibility, parse(@comment), singleton, @file.relative_name, @parent.full_name, @parent.class, @section.title ] end
marshal_load(array) 点击以切换源代码
从 array
加载此 Attr
。对于已加载的 Attr
,以下方法将返回缓存的值
# File rdoc/code_object/attr.rb, line 124 def marshal_load array initialize_visibility @aliases = [] @parent = nil @parent_name = nil @parent_class = nil @section = nil @file = nil version = array[0] @name = array[1] @full_name = array[2] @rw = array[3] @visibility = array[4] @comment = array[5] @singleton = array[6] || false # MARSHAL_VERSION == 0 # 7 handled below @parent_name = array[8] @parent_class = array[9] @section_title = array[10] @file = RDoc::TopLevel.new array[7] if version > 1 @parent_name ||= @full_name.split('#', 2).first end