gpt4 book ai didi

ruby - 在 Ruby 中,是否可以将模块向上移动到祖先链?

转载 作者:行者123 更新时间:2023-12-04 02:12:36 33 4
gpt4 key购买 nike

我有一个 Ruby 类 C,它包含一些第三方模块,比如 AB

模块 A 是通过 C 的类继承链间接包含的;假设我无法控制包含 A 的位置。现在,C 直接包含 B,但是 B 包含另一个模块 D,它恰好提供了同样提供的功能通过 A,像这样:

class C < Base

# Base includes A

include B # includes D

# methods in A overridden by D

end

祖先链是这样的(其中 ... 代表零个或多个与此讨论无关的其他祖先):

C ... B ... D ... A 

我希望 A 的功能优先于 D:我想移动 A,使其位于 的前面D 在祖先链中,像这样:

C ... A ... B ... D

我曾尝试再次简单地包含 A,但这没有用。有办法做到这一点吗?

最佳答案

混合层次结构一旦建立就无法更改。只有包含顺序决定了层次结构。在将 B 包含到 C 之后,您必须将 A 包含到 C 中(第一次),或者,如果您在 C 之前添加 A 而不是包含它,那么它将优先于 D 即使 B 是稍后包含到 C 中。

关于ruby - 在 Ruby 中,是否可以将模块向上移动到祖先链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36799396/

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