'world' class Bar 'hello' bar_-6ren">
gpt4 book ai didi

ruby - 在继承方面如何为ruby中的类定义 "<"?

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:42 25 4
gpt4 key购买 nike

当您从 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

关于ruby - 在继承方面如何为ruby中的类定义 "<"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29664617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com