无继承的Ruby类重写
我刚刚做了这个实验:无继承的Ruby类重写,ruby,inheritance,Ruby,Inheritance,我刚刚做了这个实验: class A < Hash def foo 'foo' end end class A < Hash def bar 'bar' end end 上面的代码是有效的,但只有在我稍后声明它时才有效。否则我会得到: TypeError: superclass mismatch for class A 我可以假设在Ruby中,在确保解析了“原始的第一个”声明之后,跳过超类规范而没有副作用是安全的吗 您只能在类定义的第一次出现时
class A < Hash
def foo
'foo'
end
end
class A < Hash
def bar
'bar'
end
end
上面的代码是有效的,但只有在我稍后声明它时才有效。否则我会得到:
TypeError: superclass mismatch for class A
我可以假设在Ruby中,在确保解析了“原始的第一个”声明之后,跳过超类规范而没有副作用是安全的吗 您只能在类定义的第一次出现时声明继承,因此下面的变体将起作用:
class A < Hash
end
class A < Hash
end
class A
end
class A < Hash
end
TypeError: superclass mismatch for class A
class A
def call
puts foo
puts bar
end
end
使用以下方法编写:
在mod的上下文中计算字符串或块,除非给定块时,常量/类变量查找不受影响。这可用于向类添加方法<代码>模块评估返回评估其参数的结果
是的,这是正确的。在您上次的尝试中,它尝试将
对象
类作为其超类。。所以你的错误。。这是意料之中的。。
class A
end
class A
end
class A
end
class A < Hash
end
TypeError: superclass mismatch for class A
class A < String
end
class A < Hash
end
TypeError: superclass mismatch for class A
class A
def call
puts foo
puts bar
end
end
A.class_eval do
def _call
puts foo
puts bar
end
end