Состояние 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
чтобы увидеть, можете ли вы продолжать идти и найти сломанный предмет. Вы всегда можете вернуться сюда с дополнительной информацией. После устранения проблемы не забудьте удалить новые ложные методы.