Ruby: неопределенная ошибка метода - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть этот код, который я написал в Ruby, но при попытке проверить мой файл в irb я получаю: NoMethodError: undefined method 'find_displacement' for SymbolTable:Class.Что я здесь не так делаю?

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

1 Ответ

4 голосов
/ 07 февраля 2012

Вы должны определить свой метод перед вызовом.

На момент установки переменной класса одноэлементные методы еще не были определены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...