【问题标题】:Specify what folder to use for creating class object Ruby指定用于创建类对象 Ruby 的文件夹
【发布时间】:2016-07-11 21:45:04
【问题描述】:

我有一个小问题(也许它甚至不是问题)

我正在用 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 as module name) 尝试过

【问题讨论】:

    标签: ruby class oop


    【解决方案1】:

    您可以使用模块来创建命名空间 - 这样每组类都将被封装到它们的作用(示例中的文件夹名称)。因此 OrderSet 中的类将被包装在一个模块中,例如 OrderSet/item.rb 将变为:

    module OrderSet
      class Item
        # methods and properties
      end
    end
    

    那么你可以像这样使用它

    new_order_set = OrderSet::Item.new
    

    RubyMonk 有一个名为 Modules As Namespaces 的课程,其中包含更多详细信息和示例,您可以在浏览器中运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-08
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 2017-04-07
      • 2018-11-12
      相关资源
      最近更新 更多