diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-08-13 16:55:06 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-08-13 16:55:06 +0900 |
| commit | 6b015ec775571b2cbe96ae1545dd97991fbaf34a (patch) | |
| tree | 50cb903834f528d7d655a3011d26b6573b191d8d /mrblib/class.rb | |
| parent | 779738b597f445ed32b85be60a4f390a37ec139a (diff) | |
| download | mruby-6b015ec775571b2cbe96ae1545dd97991fbaf34a.tar.gz mruby-6b015ec775571b2cbe96ae1545dd97991fbaf34a.zip | |
define Class#new in ruby to call #initialize
Diffstat (limited to 'mrblib/class.rb')
| -rw-r--r-- | mrblib/class.rb | 17 |
1 files changed, 15 insertions, 2 deletions
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)} |
