gpt4 book ai didi

ruby-on-rails - 在简单的 ruby​​ 中从 Person 实例获取孙子

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

我已经在 Rails 中实现了继承,并从 Person 类中获取子孙。

但现在我想在不使用 ActiveRecord 的情况下使用简单的 ruby​​ 类从 Person 类中获取子类和孙类。

我已经设法从一个人对象中得到 child 。请指导我如何从 Person 实例中获取孙子。

class Person
attr_accessor :name, :age
attr_reader :ref

def initialize(name, ref)
@name = name
@ref = ref
end
end

class Parent < Person
attr_reader :children

def initialize(names = %w(A B C))
@children = names.map do |n|
Person.new(n, self)
end
end
end


bar = Parent.new.children.first
bar.ref

最佳答案

如果 parent 、 child 和孙子之间没有行为差异,那么这可以用一个类建模:

class Person

attr_reader :children
attr_reader :name

def initialize(name, children: [])
@name = name
@children = children
end

def grandchildren
@children.flat_map(&:children)
end

end

我们添加了一个#grandchildren 方法,该方法向每个 child 询问他们的 child 。这个例子展示了它是如何工作的:

sally = Person.new("Sally")
fred = Person.new("Fred", children: [sally])
mary = Person.new("mary", children: [fred])
p mary.children.map(&:name) # => ["Fred"]
p mary.grandchildren.map(&:name) # => ["Sally"]

关于ruby-on-rails - 在简单的 ruby​​ 中从 Person 实例获取孙子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38901646/

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