Неинициализированная постоянная ошибка

Когда я запускаю следующий код, я получаю сообщение об ошибке "fig_match:rb:5:in '': неинициализированная константа Match::Fig (NameError) from fig_match.rb:4:in"

Я был в разгаре тестирования своих методов настройки и боя, поэтому у меня есть вызовы настройки и сопоставления после моих установщиков переменных в классе Match.

require_relative = 'fig_user.rb' #class name is Fig within fig_user.rb

class Match
    fig1 = Fig.new
    fig2 = Fig.new
    go = 0
    winner = nil

    setup(Bob, Sam)
    match.battle

    def setup(name1, name2)
    #set names
    @name1 = fig1.name
    @name2 = fig2.name

    go = rand(2)
    end


    def battle
        if go.even?
        p fig1.name

        end
    end 

конец

Это отдельный класс, на который ссылается приведенный выше код (не уверен, что это имеет значение)

class Fig 

attr_reader :name, :power, :health
attr_accessor :name, :power, :health

deckId = @id 
name = @name 
power = @power
moves = Hash["Kick", 50, "Punch", 30]
health = 100
end

person Dru    schedule 06.07.2011    source источник


Ответы (1)


require_relative — это метод. Вы присвоили его как имя переменной. Следовательно, у вас нет класса Fig в вашей области.

person Ryanmt    schedule 06.07.2011
comment
Спасибо, я только что попытался изменить размещение require_relative. Где бы он оказался в моем диапазоне? (Новое для рубина и программирования) - person Dru; 06.07.2011
comment
+1, require_relative = 'fig_user.rb' должно быть require_relative 'fig_user.rb' - person Paul Prestidge; 06.07.2011
comment
Я предполагаю, что вы... Например, я думаю, что определение ходов вызовет некоторые. Кроме того, attribute_accessor включает функции получения и установки атрибутов. Кроме того, вы используете match.battle там, где вы действительно могли бы просто использовать battle или, чтобы быть явным, self.battle; при условии, что я понимаю, что вы после. Удачи. - person Ryanmt; 06.07.2011