Ruby 中未初始化的常量 MyClass (NameError)

2024-01-12

我有一个模块 Shish(其作用类似于抽象类)和一个访问者类 Only_Onions。

我想在 Shish 模块中实例化 Only_Onions ,以便所有扩展 Shish 的类都可以使用该对象来确定它们是否只有 __onions 。

module Shish
    only_onions_class = Only_Onions.new
end

class Only_Onions
    def for_skewer
        return true
    end
end


class Skewer
    include Shish

    def only_onions
        return only_onions_class.for_skewer
    end

    def veg?
        return true
    end
end

但我收到错误“未初始化常量 Shish::Only_Onions (NameError)”。这是什么意思?


声明的顺序具有效力。 Shish 不知道代码中的 Only_Onions。如果将其更改为这样,则在定义模块 Shish 时已经声明了 Only_Onions:

class Only_Onions
    def for_skewer
        return true
    end
end

module Shish
    only_onions_class = Only_Onions.new
end

class Skewer
    include Shish

    def only_onions
        return only_onions_class.for_skewer
    end

    def veg?
        return true
    end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby 中未初始化的常量 MyClass (NameError) 的相关文章

随机推荐