【问题标题】:Undefined method `new' for AST:Module (NoMethodError)AST:Module (NoMethodError) 的未定义方法“新”
【发布时间】:2015-12-24 22:20:53
【问题描述】:

我是 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'

【问题讨论】:

    标签: ruby oop methods


    【解决方案1】:

    如果你只是想测试一个类,你不需要定义一个模块。就这样做吧:

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

    模块有两大好处:

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

    【讨论】:

      【解决方案2】:

      有了 Aetherus 的回答,我已经解决了:

      ast = AST::AST.new
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-24
        • 2015-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-01
        • 2019-06-12
        相关资源
        最近更新 更多