新的类定义和范围解析运算符

时间:2013-06-05 00:31:47

标签: ruby

我在Ruby脚本中创建了一个简单的Ruby类:

class Rock::Stone
end

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

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

这是为什么?我认为范围解析运算符在类defs中是允许的吗?

3 个答案:

答案 0 :(得分:1)

  

我认为范围解析操作符在类defs中是允许的吗?

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

module Rock
end

class Rock::Stone
end

Rock::Stone.new
# => #<Rock::Stone:0x00000000a38248>

答案 1 :(得分:0)

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

module Rock
  class Stone
  end
end

答案 2 :(得分:0)

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

This SO线程可能有帮助。