Добавление объекта в массив массивов - PullRequest
0 голосов
/ 21 октября 2011

Я пытаюсь добавить объект в массив массивов, но когда я это делаю, я получаю сообщение об ошибке в моем массиве модульных тестов массива, в котором говорится: - "неопределенный метод 'has_key' для nil: NilClass".Однако, если я попытаюсь добавить строку или число в массив массива, он будет работать абсолютно нормально.

Я настроил свой массив массивов следующим образом:

@array_of_array= Array.new(5) { Array.new(3) }

Теперь, если я попробуючтобы сделать это

@array_of_array[0][0] = MyObject.new

Затем, если я запускаю свои модульные тесты для @array_of_array, я получаю ошибку.

Но если я пытаюсь сделать это

@array_of_array[0][0] = 'Test'

Нет проблем.

- Отредактировано ---

Вот проваленный тест

it "should place object in correct starting position" do
array_of_array= Array.new(5) { Array.new(3) }
array_of_array[1][0] = MyObject.new
array_of_array.should eql('fail on purpose..want to see output')

end

Я новичок в ruby, поэтому не уверен, гдея ошибаюсь.Спасибо

1 Ответ

1 голос
/ 22 октября 2011

Как сказал Кло, ошибка, вероятно, означает, что ваш оператор MyObject.new по какой-то причине возвращает нулевой объект. Затем вы пытаетесь вызвать функцию has_key этого nil-объекта.

Создает ли ваш класс MyObject исключение, если вы используете .new! вместо .new? Если это так, вы можете понять, почему он не может вернуть правильный объект MyObject.

Редактировать

Чтобы поймать исключение внутри вашего «нового» метода для модели MyObject, вы можете сделать что-то вроде:

def new
    begin
        #whatever is done in this method
    rescue => exception
        puts exception.message
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...