未定义的方法`new'对于AST:模块(NoMethodError)

时间:2015-09-27 16:16:24

标签: ruby oop methods

我是Ruby新手,我想测试我的简单课程。但是我无法创建实例。

这是我的代码:

module AST
    class AST
        def initialize; end

        def parse(src)
            puts src
        end
    end
end

ast = AST.new  # I've also tried 'AST.AST.new'

2 个答案:

答案 0 :(得分:0)

得到Aetherus的回答,我已经解决了这个问题:

ast = AST::AST.new

答案 1 :(得分:0)

如果您只想测试一个类,则无需定义模块。就这样做:

class AST
    def initialize; end

    def parse(src)
        puts src
    end
end
ast = AST.new

模块有两大好处:

  1. 模块提供命名空间并防止名称冲突。因此,对于您的代码,您添加了AST模块,您应该创建如下所示的实例:ast = AST::AST.new
  2. 模块实现mixin工具。