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

unj*_*nj2 8 ruby

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

我想在模块Shish中实例化Only_Onions,这样所有扩展Shish的类都可以使用该对象来判断它们是否只有_onion.

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
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误"未初始化的常量Shish :: Only_Onions(NameError).这是什么意思?

pez*_*ser 7

声明的顺序有效.Shish不知道代码中的Only_Onions.如果将其更改为this,则在定义模块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
Run Code Online (Sandbox Code Playgroud)