gpt4 book ai didi

ruby - 在 Ruby 中自定义类?

转载 作者:数据小太阳 更新时间:2023-10-29 08:37:19 25 4
gpt4 key购买 nike

我试图准确理解下面这段代码完成了什么以及它是如何工作的。

class Nodes < Struct.new(:nodes) #Create a struct with array hash nodes
def <<(node)
nodes << node
self
end
end

最佳答案

Struct.new(:nodes)创建一个新的匿名 Struct 具有单个成员的子类 :nodes .根据文档,您通常会将其分配给常量,例如:

Foo = Struct.new(:nodes)
foo = Foo.new([1, 2, 3]) #=> #<struct Foo nodes=[1, 2, 3]>
foo.nodes #=> [1, 2, 3]

子类化 Struct.new

class Nodes < Struct.new(...)创建一个新类 Nodes与匿名 Struct子类作为它的父类(super class):

Nodes.ancestors
#=> [Nodes, #<Class:0x007fa0320032d0>, Struct, Enumerable, Object, Kernel, BasicObject]
# ^
# |
# anonymous Struct sublass

这允许您调用 super当重写来自 Struct 的方法时子类,例如:

class Nodes < Struct.new(:nodes)
def nodes
super
end
end

关于ruby - 在 Ruby 中自定义类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28859026/

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