Это сложный и отличный вопрос.Smalltalk имеет большой словарь, в котором хранятся все глобальные переменные.Глобалы обычно являются классами, но там может быть любой объект.Это просто словарь (ключ / значение).Этот большой словарь, о котором я говорю, называется Smalltalk.Напишите «Smalltalk осмотреть», и вы увидите это.Это уникальный экземпляр класса SmalltalkImage.
Итак ... когда в коде вы набираете MyClass, это происходит потому, что в значении Smalltalk at: #MyClass у вас есть класс.Но вы также можете сделать: Smalltalk по адресу: #mariano put: 'mariano'.Затем вы можете написать «Мариано» везде, и вы получите строку «Мариано».
Стенограмма такая.В (Smalltalk at: #Transcript) хранится уникальный экземпляр Transcript.Который, действительно, может быть не экземпляром класса Transcript, а другим классом.В pharo это экземпляр ThreadSafeTranscript.Проверьте это:
ThreadSafeTranscript instanceCount -> 1 Открыть запись.Стенограмма открыта.Стенограмма открыта.
И она у вас всегда будет.Потому что сам Transcript - это МОДЕЛЬ.Не вид.Представление (окна, которые открываются при открытии Transcript) - это экземпляры PluggableTextMorph, модель которого является уникальным экземпляром Transcript.Проверьте это:
PluggableTextMorph instanceCount - >> 11 Открытие стенограммы.Стенограмма открыта.Стенограмма открыта.PluggableTextMorph instanceCount - >> 14
Для получения более подробной информации выполните отладку "Transcript open".
Cheers