ФЭНДОМ


Синтаксис Smalltalk довольно прост, если не сказать минималистичен. Сообществом пользователей даже была сделана такая вещь, как синтаксис Smalltalk на открытке (Squeak-сообщество и здесь выделилось - они сделали Squeak Action Card :-) ).

Ключевые слова Править

  • self - Cсылка на объект, в контексте которого происходит выполнение (т.е. на "себя"), аналог ключевого слова this в C-подобных языках.
  • super - Cсылка на "родителя", аналог ключевого слова parent в C-подобных языках. Это не объект как таковой, а указание, что вызываемый метод надо искать начиная с родительского класса.

Синтаксические элементы Править

  • . (точка) - Разделитель выражений. Аналог точки с запятой (;) в C-подобных языках.
  • := (двоеточие и знак "равно", написанные слитно) - Операция присваивания.
  • ^ (циркумфлекс) - Возвращает результат из метода, аналог оператора return в C-подобных языках. В Smalltalk любой метод всегда возвращает какое-то значение. Если в методе не используется оператор ^, то метод возвращает значение self.
  • | | (две вертикальные черты) - Заведение локальных переменных. Имена переменных перечисляются между вертикальными чертами. Пример: | var1 var2 |. Может находиться либо в начале метода, либо в начале блока (в таком случае область видимости переменных - этот блок).
  • [ ] (квадратные скобки) - Smalltalk-блок. Подробное описание - в отдельной статье.
    • :param (двоеточие и имя параметра, написанные слитно) - Аргумент (параметр) блока.
    • | (вертикальная черта) - Конец описания аргументов.
  • ' ' (одинарные кавычки) - Строка. Пример: 'This is a string'. Для того, чтобы использовать одинарную кавычку внутри строки, нужно её удвоить. Пример: 'It''s a string'.
  • #someSymbol (решётка, записанная слитно со словом) - Так называемый "символ" (объект класса Symbol).
  • " " (двойные кавычки) - Комментарий.
  • #( ) - Массив (объект класса Array). Пример: #( 1 2 ) - массив из двух элементов "1" и "2".
  • #[ ] - Массив байтов (объект класса ByteArray).
  • ( ) - Скобки. Влияют на очерёдность выполнения операций.
  • ; (точка с запятой) - Если требуется выполнить несколько разных методов у одного и того же объекта, то не обязательно указывать этот объект каждый раз - достаточно указать его только один раз и перечислить вызываемые методы через точку с запятой. Некоторый аналог - оператор with в Pascal-е.

Базовые объекты Править

  • nil - объект класса UndefinedObject. Именно этим объектом инициализируются все переменные. Это синглетон - т.е. объект, существующий в единственном экземпляре.
  • true - объект класса True, отнаследованного от Boolean. Синглетон.
  • false - объект класса False, отнаследованного от Boolean. Синглетон.

Выражения Править

Выражения в Smalltalk всегда стрятся по принципу: сначала идёт объект, потом метод, который у него вызывается (возможно с параметрами). С учётом приоритетов исполнения это даёт строгий и однозначный синтаксис.

Типы методов Править

В Smalltalk существуют методы трёх типов: унарные, бинарные и "ключевые слова" (keywords).

Унарные методы Править

Унарные методы называются так потому, что они взаимодействуют только с одним объектом - тем, у которого вызываются. Соответственно, у унарных методов нет параметров. Имя унарного метода всегда начинается с маленькой буквы и состоит из больших и маленьких букв, а также цифр.

Примеры:

  • factorial в классе Integer. Например, 10 factorial вернёт 3628800.
  • not - в классах True и False. Например, true not вернёт false.

Бинарные методы Править

Называются они так потому, что они взаимодействуют с двумя объектами - тем, у которого вызываются и ещё одним, передаваемым в качестве параметра. Соответственно, у них строго один параметр. Имя бинарного метода состоит из одного или двух из следующих символов: + - / \ * ~ < > = @ & ? ,.

Примеры:

  • 1 + 2. У объекта 1 вызывается метод + с параметром 2. Вернёт это метод объект 3.
  • 100 @ 200. У объекта 100 вызывается метод @ с параметром 200. Вернёт этот метод точку (объект класса Point) с координатами x = 100, y = 200.
  • 'key' -> 123. У объекта 'key' (т.е. у строки) вызывается метод -> с параметром 123. Результатом будет объект класса Association, причём в качестве ключа будет строка 'key', а значением будет 123.

Методы - ключевые слова Править

Приоритет исполнения Править

На приоритет исполнения влияет только тип метода - и, разумеется, скобки. Все методы одного типа (например, все бинарные) имеют одинаковый приоритет.

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на ФЭНДОМЕ

Случайная вики