加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby子类命名空间与父类

发布时间:2020-12-17 03:22:03 所属栏目:百科 来源:网络整理
导读:使用命名空间类而不是模块是否有效和/或可接受?也许这只是一个意见问题,但我认为有人可能有这方面的经验,可以肯定地说这是否是一种公认??的做法. 以下面的类为例: class Parentendclass Parent::Child1 Parentendclass Parent::Child2 Parentend 我知道上
使用命名空间类而不是模块是否有效和/或可接受?也许这只是一个意见问题,但我认为有人可能有这方面的经验,可以肯定地说这是否是一种公认??的做法.

以下面的类为例:

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在下面问了一些例子.这是我建立的一个名为classy_enum的Gem,它允许用户定义属于Enum类型成员的类.查看example usage section了解更多背景信息.我正在清理代码库,我发现我建议的命名方案可以改进.因此,不使用PriorityLow,您可以使用Priority :: Low(或任何最有意义的,但我倾向于后者)

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读