模块的Ruby继承
所以我有三门课:模块的Ruby继承,ruby,class,inheritance,Ruby,Class,Inheritance,所以我有三门课: MyModule::Base MyModule::Artist MyModule::Song MyModule::Artist继承自MyModule::Base,因此可以访问其所有实例方法,并声明为: module MyModule class Artist < MyModule::Base 我得到一个名称错误'未初始化常数'。比如MyModule::Base根本不存在!我是否遗漏了Ruby中类继承的一些基本内容,还是其他什么 谢谢。我查看了您的回购协议,发现虽然
MyModule::Base
MyModule::Artist
MyModule::Song
MyModule::Artist
继承自MyModule::Base
,因此可以访问其所有实例方法,并声明为:
module MyModule
class Artist < MyModule::Base
我得到一个名称错误
'未初始化常数'。比如MyModule::Base
根本不存在!我是否遗漏了Ruby中类继承的一些基本内容,还是其他什么
谢谢。我查看了您的回购协议,发现虽然您通过
艺术家中的require\u relative
正确地要求您的基本模块,但您使用大锤require
敲碎歌曲中的螺母
因为有一种系统范围的base
,所以正在加载它,而不是预期的本地Echonest::base
。只需使用require\u relative
即可享受
希望这能有所帮助。你能发布一个可运行的代码片段来演示这个问题吗?我是在这个repo的上下文中说的:base.rb和song.rb文件。是的,不过,复制代码片段还是不错的。也许这会让你意识到这个问题。注意:试着使用class-Artist
和class-Song
。您不需要范围说明符,您已经在那个范围内了。我想这可能与文件系统有关。即使删除了模块的所有引用并将其作为一系列类,它仍然找不到基类。但是,这是有意义的,当我运行规范时,我仍然只剩下echonest ruby api/lib/song.rb:9:in':未初始化常量echonest::Base(NameError)
:(这似乎与我的本地计算机上的权限有关,尽管您的回答确实有帮助,因此我将其标记为正确答案。
module MyModule
class Song < MyModule::Base