【问题标题】:Ruby: I want a class called 'Thread' - but there already is one...Module?Ruby:我想要一个名为“Thread”的类——但已经有一个……模块?
【发布时间】:2010-01-06 01:14:57
【问题描述】:

我认为我的大脑已经死了,但我认为有一种简单的方法可以在 Ruby 中使用“模块”为我自己的类创建命名空间 - 还是我做梦?

我所追求的是 Ruby 等价于将我的类定义放入包中的 Java 方式...

或者我必须为我的对象发明一个新名称???

【问题讨论】:

    标签: ruby module namespaces package


    【解决方案1】:
    module ThreadReader
    
        class Thread
        ...
        end
    end
    
    t=ThreadReader::Thread.new(...
    => #<ThreadReader::Thread:...
    

    Doh...是的,脑死亡 - 我试图使用“模块”(大写“M”),而不是“模块”...

    【讨论】:

      【解决方案2】:

      Modules behave this way 你会知道的。

      我相信您也知道,在创建与其他经常使用的类同名的类时,可理解和可维护的代码存在一定的危险,因此您可能希望使用不同的名称,即使您的更改了命名空间。

      【讨论】:

      • 你是对的,我知道 - 但有时很难想出有意义但又短的名字:)
      • 我曾经有过这个问题。自从我阅读了 Code Complete 之后,我发现我开始使用更长但更清晰的名称来命名事物。我打字的速度足够快,再多几个字符就不会造成任何伤害。当然 ThreadReader::Thread 无论如何都可能比 ReadableThread 长...
      • 将在某个时候检查 Code Complete - 干杯。实际上,简短有意义的名称与打字速度无关 - 它更多地与代码缩进有关。我同意你关于 ThreadReader::Thread 一样长的观点:) (虽然当然有一些战术性的“包含”帮助 - 但是由于真正的“线程”对象,代码可能会遇到问题......)
      猜你喜欢
      • 2023-04-11
      • 2020-08-13
      • 2011-04-02
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      相关资源
      最近更新 更多