В Smalltalk символ @
используется для создания экземпляров класса Point
. Экземпляр такого класса имеет два ивара x
и y
. Вы можете создать Point
, используя сообщение x:y:
, например,
Point x: 3 y: 4.
Однако использовать это сообщение @
менее подробно
3 @ 4
для создайте то же самое.
Обратите внимание, что, хотя x:y:
является сообщением, которое вы отправляете в класс Point
, сообщение @ 4
отправляется в целое число 3
. Другими словами, первое - это сообщение класса, второе - сообщение экземпляра.
Обратите внимание, что, поскольку многие люди пишут 3@4
вместо 3 @ 4
, это может привести к неожиданному побочному эффекту. На самом деле
3@-4
должно быть (в принципе) Point
с координатами 3
и -4
. Однако синтаксис Smalltalk отличается и будет анализировать его как сообщение с селектором @-
и аргументом 4
, отправленным получателю 3
. Вот почему некоторые диалекты делают исключение, так что сообщение интерпретируется как 3 @ -4
, что может быть достигнуто путем реализации метода @-
в Number
или путем настройки синтаксического анализатора.