模块 Net::IMAP::Config::AttrAccessors

注意: 此模块是内部实现细节,不保证向后兼容。

attr_accessor 值存储在结构体中,而不是实例变量中,这样可以更简单地确保所有配置对象共享一个对象形状。这也简化了对所有已定义属性的迭代。

私有类方法

attributes() 点击切换源码
# File net-imap-0.5.4/lib/net/imap/config/attr_accessors.rb, line 33
def self.attributes
  instance_methods.grep(/=\z/).map { _1.to_s.delete_suffix("=").to_sym }
end
included(mod) 点击切换源码
# File net-imap-0.5.4/lib/net/imap/config/attr_accessors.rb, line 21
def self.included(mod)
  mod.extend Macros
end

公共实例方法

freeze() 点击切换源码

除了 self 之外,还会冻结内部属性结构体。

调用超类方法
# File net-imap-0.5.4/lib/net/imap/config/attr_accessors.rb, line 51
def freeze
  data.freeze
  super
end

保护实例方法

initialize() 点击切换源码
调用超类方法
# File net-imap-0.5.4/lib/net/imap/config/attr_accessors.rb, line 45
def initialize # :notnew:
  super()
  @data = AttrAccessors.struct.new
end

私有实例方法

initialize_clone(other) 点击切换源码
调用超类方法
# File net-imap-0.5.4/lib/net/imap/config/attr_accessors.rb, line 62
def initialize_clone(other)
  super
  @data = other.data.clone
end
initialize_dup(other) 点击切换源码
调用超类方法
# File net-imap-0.5.4/lib/net/imap/config/attr_accessors.rb, line 67
def initialize_dup(other)
  super
  @data = other.data.dup
end