Состояние Pharo повреждено, как сохранить мой код?

После использования DynamicComposableModel и редактирования моего метода в отладчике мое изображение Pharo 6.1 достигло такого состояния:

Instance of SpecLayout did not understand #visibleSlots

а также

Instance of SpecLayout did not understand #instVarNames

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

ComposableModel subclass: #UIVidya
    instanceVariableNames: 'vidya listE editE tabmgr'
    classVariableNames: ''
    poolDictionaries: ''
    category: 'vkVidya'!

, На сломанном изображении UIVidya classLayout возвращает SpecLayout. В здоровом образе, UIVidya classLayout возвращает FixedLayout. Я не сделал это изменение специально и даже не знаю, как это произошло. Могу ли я вылечить мой сломанный образ Pharo на месте, не отказываясь от последних изменений?

2 ответа

Решение

Мне удалось восстановить нормальность, сделав это на детской площадке:

UIVidya layout: sdfgh

(что так же, как UIVidya layout: nil). Спасибо за ваше внимание, что действительно помогло агрессивное использование System Browser и Playground для сравнения сломанных и неразрушенных экземпляров Pharo. Теперь я могу "подать" мой код!

РЕДАКТИРОВАТЬ:

Проблема возникла из устаревшего учебника по адресу https://benjamin.vanryseghem.com/projects/spec/docs/dynamic/ который включает в себя код, который отправляет layout:, Не делай этого в современном Pharo!

Не похоже, что ваше изображение сломано. Второе сообщение об ошибке предполагает, что у вас есть экземпляр SpecLayout где class (предположительно SpecLayout) ожидается. Попробуйте определить методы

instVarNames
  ^self class instVarNames

visibleSlots
  ^self class visibleSlots

на стороне экземпляра SpecLayout чтобы увидеть, можете ли вы продолжать идти и найти сломанный предмет. Вы всегда можете вернуться сюда с дополнительной информацией. После устранения проблемы не забудьте удалить новые ложные методы.

Другие вопросы по тегам