【问题标题】:New class definition and scope resolution operator新的类定义和范围解析运算符
【发布时间】:2013-05-31 13:10:37
【问题描述】:

我在 Ruby 脚本中创建了一个简单的 Ruby 类,如下所示:

class Rock::Stone
end

当我在命令提示符下运行脚本时,我得到:

`<main>': uninitialized constant Rock (NameError)

这是为什么?我认为类定义中允许范围解析运算符?

【问题讨论】:

    标签: ruby


    【解决方案1】:

    我认为类定义中允许范围解析运算符?

    它们是允许的,但包含的模块(或类)必须首先存在:

    module Rock
    end
    
    class Rock::Stone
    end
    
    Rock::Stone.new
    # => #<Rock::Stone:0x00000000a38248>
    

    【讨论】:

      【解决方案2】:

      我认为您可能需要先创建一个类或模块Rock,然后Rock::Stone 才能存在。

      This SO 线程可能会有所帮助。

      【讨论】:

        【解决方案3】:

        必须首先声明封装模块/类。试试这个:

        module Rock
          class Stone
          end
        end
        

        【讨论】:

          猜你喜欢
          • 2014-10-05
          • 2013-06-13
          • 2012-04-20
          • 2018-04-24
          • 1970-01-01
          • 2011-05-19
          • 2010-09-09
          • 2015-12-18
          • 2011-07-28
          相关资源
          最近更新 更多