add Module#{attr,attr_reader,attr_writer,attr_accessor}; close #257

This commit is contained in:
Yukihiro Matsumoto
2012-06-20 13:44:32 +09:00
parent ea81146a41
commit 97e5ab22f6
+24
View File
@@ -0,0 +1,24 @@
class Module
# 15.2.2.4.13
def attr_reader(*names)
names.each{|name|
define_method(name){self.instance_variable_get(name)}
}
end
# 15.2.2.4.14
def attr_writer(*names)
names.each{|name|
aset = (name.to_s+"=").intern
define_method(aset){|v|self.instance_variable_set(name,v)}
}
end
# 15.2.2.4.12
def attr_accessor(*names)
attr_reader(*names)
attr_writer(*names)
end
# 15.2.2.4.11
def attr(name)
attr_reader(name)
end
end