Ruby模块声明
这样做有什么区别吗Ruby模块声明,ruby,Ruby,这样做有什么区别吗 class Bus::Driver end 及 如果不是,首选哪种语法 做[…]有什么区别吗 唯一的区别是,在class Bus::Driver中,必须定义Bus模块,而这并不代表第二个模块 首选哪种语法 这不是一个建设性的问题,但我个人更喜欢第二个问题,因为它明确指出,Bus是一个模块,而对于第一个问题,我一眼就看不出Bus是一个模块还是一个类 class Bus::Driver end 将导致错误NameError:未初始化的常量总线 因此,在某些时候,您必须声明类总
class Bus::Driver
end
及
如果不是,首选哪种语法
做[…]有什么区别吗
唯一的区别是,在class Bus::Driver
中,必须定义Bus
模块,而这并不代表第二个模块
首选哪种语法
这不是一个建设性的问题,但我个人更喜欢第二个问题,因为它明确指出,Bus
是一个模块,而对于第一个问题,我一眼就看不出Bus
是一个模块还是一个类
class Bus::Driver
end
将导致错误NameError:未初始化的常量总线
因此,在某些时候,您必须声明类总线
或模块总线
。但它不必每次都是完整的层次结构
我倾向于提前要求设置名称空间,然后在我的其余文件中使用更精简的形式。我不知道有任何首选的方法-肯定没有什么会批评你的。当你在一个项目中有一个模块的不同类分布在多个文件中时,首选第一种语法;所提供的
模块
始终在路径
中定义。例如,在制作gem
时
第二个更为核心,在涉及细节时应该这样做<代码>模块不仅包括
类
,还包括方法
和常量
等命名空间;它们很有用。当涉及继承时,这些声明之间还有一个额外的区别:
让我们假设Driver
继承自Person
类
class Bus::Driver < Person
end
class总线::司机
模块总线
等级司机<人
结束
结束
当Ruby试图解析Person
常量时,它在第一个声明中只查找::Person
。第二个函数同时查找Bus::Person
和::Person
根据您的情况,这可能会使一个声明比另一个更受欢迎
class Bus::Driver < Person
end
module Bus
class Driver < Person
end
end