【问题标题】:Ruby mixin gives unidentified constant errorRuby mixin 给出了未知的常量错误
【发布时间】:2011-01-27 07:10:43
【问题描述】:

在 irb,我这样做

class Text
  include FileUtils
end

我得到:NameError: uninitialized constant Test::FileUtils

如果我只是这样做:包括 FileUtils(即现在的类),一切正常。

什么给了?

【问题讨论】:

    标签: ruby


    【解决方案1】:

    这是一个旧线程,但如果在此线程上遇到任何问题,仍然可以找到答案。只需在他的代码顶部(或类/方法/模块之外的任何地方)添加以下行

    require 'fileutils'
    

    在类中包含不起作用,可能是它用于在旧版本中工作。

    【讨论】:

      【解决方案2】:

      您需要确保 Ruby 了解 FileUtils 模块。默认情况下不加载该模块:

      >> FileUtils
      NameError: uninitialized constant FileUtils
          from (irb):1
      >> require 'fileutils'
      => true
      >> FileUtils
      => FileUtils
      

      不要太担心错误NameError: uninitialized constant Text::FileUtils - 当您尝试包含一个 Ruby 不知道的常量时,它会出现在几个地方。在您的情况下,首先它将查找 Text::FileUtils,然后它将在根名称空间中查找 ::FileUtils。如果它在任何地方都找不到它(在你的情况下它找不到),那么错误消息会告诉你它首先看到的地方。

      【讨论】:

        【解决方案3】:

        你试过了吗?

        class Text
          include ::FileUtils
        end
        

        这假设 FileUtils 不在模块内。

        【讨论】:

        • 不起作用 ... irb(main):004:0> 类测试 irb(main):005:1> 包括 ::FileUtils irb(main):006:1> 结束 NameError : 未初始化的常量 FileUtils 来自 (irb):5
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-26
        • 2023-02-02
        • 2011-02-25
        • 2010-10-22
        • 2014-12-26
        • 2022-01-20
        相关资源
        最近更新 更多