我有一个小问题(也许根本不是问题)
我正在用Ruby制作一个应用程序,文件夹/文件结构如下:
OrderSet/
..item.rb
..file.rb
..order_object.rb
OrderGet/
..item.rb
..files.rb
..order.rb
正如你所看到的,我有两个item.rb文件,它们在类结构上都不同。现在我需要创建一个OrderSet/item.rb对象,我如何指定它需要在OrderSet中查找,而不获取OrderGet对象?
我必须明确,所有文件都是主rb文件中必需的。
我尝试过执行OrderSet.Item(该类在Item.rb中被称为Item),但它抱怨未初始化的常量OrderSet
提前感谢!
[编辑]我也尝试过用它制作模块,也许我没有正确理解这个概念,但我已经用OrderSet.Item.new(OrderSet作为模块名称)
您可以使用一个模块来创建一个命名空间,这样每个类集都会被封装到它们所做的事情(示例中的文件夹名称)。因此,OrderSet中的类将被封装在一个模块中,例如OrderSet/item.rb将变成:
module OrderSet
class Item
# methods and properties
end
end
然后你可以像一样使用它
new_order_set = OrderSet::Item.new
RubyMonk有一个名为Modules As Namespaces的课程,其中有更多的细节和示例,您可以在浏览器中运行。