2012-02-07 58 views
0

我有我用Ruby编写的代码,但是当试图在irb中测试我的文件时,我收到:NoMethodError: undefined method 'find_displacement' for SymbolTable:Class。我在这里做错了什么?Ruby:未定义的方法错误

class SymbolTable 
    include Singleton 

    @@MAX_SYMBOLS = 500 
    @@DISPLACEMENT = SymbolTable.find_displacement() ##error here 
    @@TABLE_SIZE = @@MAX_SYMBOLS + (@@MAX_SYMBOLS * 0.1) + @@DISPLACEMENT 

    def initialize() 
    "Constructs a single instance of a SymbolTable to be used by the compiler" 
     @sym_table = Array.new(@@TABLE_SIZE) 
    end 

    def add(element, index) 
    "Inserts an element (identifier) into the SymbolTable" 
    @sym_table[index] = element if element.is_a? SymbolTableEntry 
    end 

    def SymbolTable.find_displacement() 
    n = 1 
    k = @@MAX_SYMBOLS 
    while not (k + n).odd? do 
     n += 2 
    end 

    return k + n 
    end 

    def to_s 
    "Prints a list of all elements currently in the SymbolTable" 
    pp @sym_table 
    end 
end 

回答

4

您必须在调用它之前定义您的方法。

当你的类变量被设置的时候,还没有定义单例方法。

+0

......谢谢 – 2012-02-07 03:32:49

+0

+1 - Doh,在键盘上睡着了。 ;-) – 2012-02-07 03:44:20

相关问题