Сообщение анализируется получателем, и поэтому два синтаксически одинаковых предложения, будучи посланы разным получателям, могут вызвать разные действия. Например, согласно сообщению
cursor moveTo:locationA
курсор будет передвинут в положение A (locationA), а согласно сообщению
window moveTo:locationA
в положение A будет перемещен выделенный фрагмент экрана - окно. В некоторых случаях разбор сообщения может окончиться неудачей. Например, в сообщении table+5 к столу нельзя прибавить 5: объекту table посылать сообщение +5 некорректно. В этом случае системой фиксируется ошибка по невозможности выполнения.
Унарное сообщение имеет более высокий приоритет, чем бинарные. Приоритет может задаваться скобками.
Например, x - y size = x - (y size).
Приведем некоторые примеры сообщений и их результатов:
Сообщение |
Тип |
Объект-адресат |
Имя сообщения |
Объект-параметр |
Результат |
1 + 2 |
Бинарное сообщение |
1 (целое) |
+ |
2 (Целое) |
Целое |
'привет' inPos: 5 |
Ключевое сообщение |
'привет' (строка) |
inPos: |
5 (Целое) |
Символ |
12 factorial |
Унарное сообщение |
12 (целое) |
factorial |
Нет |
Целое |
5 in:3 and:7 |
Ключевое сообщение |
5 (целое) |
in: and: |
3, 7 (Целое) |
Истина |