gpt4 book ai didi

Ruby 子类命名空间与父类

转载 作者:数据小太阳 更新时间:2023-10-29 07:15:24 24 4
gpt4 key购买 nike

将类用于命名空间而不是模块是否有效和/或可接受?也许这只是一个意见问题,但我认为有人可能对此有经验,可以明确地说这是否是一种公认​​的做法。

以下面的类为例:

class Parent
end

class Parent::Child1 < Parent
end

class Parent::Child2 < Parent
end

我知道上面的代码有效,但是使用类而不是命名空间的模块似乎很奇怪。之所以要给子类加上父类名,是因为我打算有很多子类,想避免名称冲突。例如:

class Priority
end

class Priority::Low < Priority
end

class Temperature
end

class Temperature::Low < Priority
end

替代方案是不使用命名空间,只使用父名称作为子类名称的一部分:

class PriorityLow < Priority
end

在 Ruby 中是否有命名空间的最佳实践?

更新:

@sawa 在下面询问了一些例子。这是我 build 的一个名为 classy_enum 的 Gem它允许用户定义属于 Enum 类型成员的类。查看example usage section了解更多背景知识。我正在清理代码库,我突然想到我建议的命名方案可以改进。因此,除了使用 PriorityLow,您还可以使用 Priority::Low(或任何最有意义的方法,但我倾向于后者)

最佳答案

我没有明确的答案,但似乎值得注意的是 Ruby Class 类是 Module 的子类,这对我来说意味着 Class 是一种模块,这表明做你想做的事可能是合理的。我当然看不出有任何理由避免它,尽管我很好奇是否有人提出任何潜在的缺点。

关于Ruby 子类命名空间与父类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11489459/

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