Я пытаюсь изучить Smalltalk через учебные пособия, входящие в состав Dolphin Smalltalk X6.«: =» и приоритет двоичных сообщений в Smalltalk
Мой вопрос касается оценки выражений с несколькими сообщениями.
Я понимаю, что сначала обрабатываются простые сообщения, затем двоичные сообщения и, наконец, сообщения ключевых слов (за исключением кода в скобках). Тем не менее, у меня возникли проблемы с применением этого понимания ко второй строке в следующем примере (см. Dolphin Smalltalk tutorial).
playground := Playground new.
teresa := playground add: Triangle new. "Misunderstood code"
teresa class. "Evaluates to 'Triangle'"
Если мое понимание было правильно, вторая линия будет оцениваться таким образом:
1. Simple message 'new' sent to Triangle, triangle object as response
2. Binary message ':=' with parameter 'playground' sent to 'teresa'.
3. Keyword message 'add:' with parameter 'triangle object' sent to 'teresa'.
4. teresa class. "evaluates to 'Playground'".
Мое непонимание в том, как «Teresa» приходит, чтобы обратиться к объекту анонимного Triangle, а не объект площадка называется к «игровой площадке».
Я искал второе объяснение оценки Smalltalk для упоминания о: = или добавлении: быть особыми случаями без успеха, и единственное другое объяснение, о котором я могу думать, является фундаментальным недоразумением.
Любая помощь выпрямляет меня?
задается вопросом, почему: = это не сообщение в Smalltalk. Почему бы не заставить переменные получать: =? – Hendekagon
Поскольку переменная является фактически указателем на объект, это не сам объект. Сообщения отправляются объекту, на который указывает переменная, тогда как оператор: = меняет объект, на который указывает переменная. –
hmm указатели объектов не являются объектами, поэтому они не могут получить: = (или pointTo: anObject, или →) – Hendekagon