当我使用数组作为超类创建一个匿名类时,数组方法<<和[]=不会被继承。下面是我的代码
class SubArray < Array
end
sa = SubArray.new
sa << "foo"
puts sa.inspect
sa_meta = Class.new(Array)
sa_meta << "foo"
puts sa_meta.inspect
给出了结果:
["foo"]
lib/so_example1.rb:9:in `<main>': undefined method `<<' for #<Class:0x6b10b8e4> (NoMethodError)
我的ruby版本是:
ruby 1.9.3p194 (2012-04-20 revision 35410) [i386-darwin11.4.2]
如何使用超类动态创建类?
发布于 2013-02-19 20:50:40
数组方法<<和[]=未被继承
他们当然是!只是别忘了创建一个类的实例。
sa_meta_klass = Class.new(Array)
sa_meta = sa_meta_klass.new
sa_meta << "foo"
puts sa_meta.inspect
# >> ["foo"]
https://stackoverflow.com/questions/14957911
复制相似问题