Sha256: c8ff4a2852cb89220367343590af73f01f56bb19b918242b7e781c0ee0768890
Contents?: true
Size: 554 Bytes
Versions: 12
Compression:
Stored size: 554 Bytes
Contents
module MissileEmitter module Attributes MissileEmitter do |klass, field, default, *, &block| attribute = "@#{field}" # 构造实例变量名称,如:name => @name # 动态定义实例⽅法 klass.define_method field do if instance_variable_defined?(attribute) instance_variable_get attribute else #返回声明的默认值,同样考虑传递Proc的情况 block ? instance_eval(&block) : default end end # 写值⽅法 attr_writer field end end end
Version data entries
12 entries across 12 versions & 1 rubygems