【发布时间】:2013-05-31 13:10:37
【问题描述】:
我在 Ruby 脚本中创建了一个简单的 Ruby 类,如下所示:
class Rock::Stone
end
当我在命令提示符下运行脚本时,我得到:
`<main>': uninitialized constant Rock (NameError)
这是为什么?我认为类定义中允许范围解析运算符?
【问题讨论】:
标签: ruby
我在 Ruby 脚本中创建了一个简单的 Ruby 类,如下所示:
class Rock::Stone
end
当我在命令提示符下运行脚本时,我得到:
`<main>': uninitialized constant Rock (NameError)
这是为什么?我认为类定义中允许范围解析运算符?
【问题讨论】:
标签: ruby
我认为类定义中允许范围解析运算符?
它们是允许的,但包含的模块(或类)必须首先存在:
module Rock
end
class Rock::Stone
end
Rock::Stone.new
# => #<Rock::Stone:0x00000000a38248>
【讨论】:
我认为您可能需要先创建一个类或模块Rock,然后Rock::Stone 才能存在。
This SO 线程可能会有所帮助。
【讨论】:
必须首先声明封装模块/类。试试这个:
module Rock
class Stone
end
end
【讨论】: