当您从 Struct.new
继承时究竟发生了什么而不是从一个类?或者换句话说,<
怎么样?与结构对象而不是类对象一起使用时为类定义的运算符?
案例一:
class SomeClass < ParentClass; end;
案例二:
AClass = Struct.new(:value)
class SubClass < AClass; end;
案例三:
class SubClass < Struct.new(:value); end;
案例一:
这是不涉及结构的标准继承。我不确定您想了解什么。
案例二:
Struct.new 返回一个类,该类具有给定初始化方法的属性。例如,以下结构和 Foo 类的行为相同。
Struct.new(:bar, baz)
class Foo
attr_reader :bar, :baz
def initialize(bar, baz)
@bar = bar
@baz = baz
end
end
由于上述结构和类具有相同的行为,从它们继承将赋予子类该功能。
class Bar < Struct.new(:bar, :baz)
end
bar_struct = Bar.new('hello', 'world')
bar_struct.bar # => 'hello'
bar_struct.baz # => 'world'
class Bar < Foo
end
bar_class = Bar.new('hello', 'world')
bar_class.bar # => 'hello'
bar_class.baz # => 'world'
案例三:
这与情况 2 相同。这里唯一的区别是您已将结构分配给常量 AClass
我是一名优秀的程序员,十分优秀!