0

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

class Rock::Stone
end

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

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

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

4

3 回答 3

1

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

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

module Rock
end

class Rock::Stone
end

Rock::Stone.new
# => #<Rock::Stone:0x00000000a38248>
于 2013-06-05T00:47:15.337 回答
0

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

module Rock
  class Stone
  end
end
于 2013-06-05T00:41:36.127 回答
0

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

这个SO 线程可能会有所帮助。

于 2013-06-05T00:43:29.900 回答