Ну не знаю, что тут сказать.

Я смотрю на экран уже больше часа. Мне ничего не приходит.

Еще в Модуле 1 было дополнительное упражнение, в котором нужно было построить виртуальную колоду карт и написать для нее несколько основных методов. Я застрял на этом некоторое время, прежде чем мне пришлось перейти к следующей лаборатории. Думаю, об этом я и напишу сегодня.

Построить колоду было достаточно просто. Я быстро набросал, как это сделать в хэшах:

Я взял тот же код и превратил его в колоду объектов здесь:

Проблема возникла, когда я пытался пройти последний тест в лаборатории. Создание метода, удаляющего одну карту из колоды.

Это кажется простым. Все остальное проходит. Колода инициализируется массивом из 52 карточных объектов. Более ранний тест проверяет это условие, и он оказывается верным, он проходит. Это должно быть просто использование .pop в этом массиве для удаления одного объекта. И все же, когда я делаю именно это, количество карт чудесным образом уменьшается с 52 до 50.

Я попытался беззастенчиво сделать тест зеленым, добавив одну карту после строки, которая выталкивает одну из колоды. Первоначально это вызывало ошибку, из-за которой количество карт увеличивалось до 54. Математика вокруг этого казалась невозможной. Почему колода выбрасывала две карты каждый раз, когда я приказывал коду удалить одну? И почему после добавления одной карты счет дошел до 54? И было ли это добавление карты после удаления одной карты, как и было задумано? Если одна карта считалась за две при удалении, это означало бы, что одна карта при добавлении считалась за шесть. Ничего из этого не имело смысла.

Я решил выбросить все это и восстановить с нуля, и продолжал получать ошибку, из-за которой удаление карты снижает количество карт на два, но теперь добавление новой карты после удаления увеличивает количество карт до 52. Я не уверен, прогресс это или нет, хотя мне жаль, что я не сделал снимок экрана с исходной ошибкой, которая вернула 54 карты.

Я собирался закончить этот пост решением, но ничего не приходит в голову. У меня есть 8 минут до начала урока, и срок блога истек. Возможно, я вернусь к этой запутанной ошибке в будущем посте в блоге, когда буду более опытным, и посмеюсь над ошибкой новичка, которую совершал.