From 6b015ec775571b2cbe96ae1545dd97991fbaf34a Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 13 Aug 2013 16:55:06 +0900 Subject: define Class#new in ruby to call #initialize --- mrblib/class.rb | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'mrblib') diff --git a/mrblib/class.rb b/mrblib/class.rb index 6d624ee83..57aac2f93 100644 --- a/mrblib/class.rb +++ b/mrblib/class.rb @@ -1,10 +1,23 @@ +class Class + def new(*args,&b) + obj = self.alloc + obj.initialize(*args,&b) + obj + end + def self.new(*args) + obj = super + obj.inerited + obj + end +end + class Module # 15.2.2.4.13 def attr_reader(*names) names.each do |name| name = name.to_s raise(NameError, "#{name.inspect} is not allowed as an instance variable name") if name.include?('@') || name.include?('?') || name.include?('$') - + attr_name = '@'+name define_method(name){self.instance_variable_get(attr_name)} end @@ -14,7 +27,7 @@ class Module names.each do |name| name = name.to_s raise(NameError, "#{name.inspect} is not allowed as an instance variable name") if name.include?('@') || name.include?('?') || name.include?('$') - + attr_name = '@'+name name = (name+"=").intern define_method(name){|v|self.instance_variable_set(attr_name,v)} -- cgit v1.2.3