ФЭНДОМ


Символы - это тип данных в Smalltalk, очень похожий на строки.

Символ записывается как #someSymbol (решётка, записанная слитно со словом), например #top, #doesNotUnderstand.

Символ - это объект класса Symbol, являющегося потомком класса String. В отличии от строк, символы уникальны. То есть, два равных (эквивалентных) символа всегда идентичны друг другу: если aSymbol1 = aSymbol2, то и aSymbol1 == aSymbol2. Или, говоря другими словами, равенство символов можно проверит сравнением объектных указателей.

Именно из-за свойства "уникальности" символы очень активно используются в "низкоуровневом" программировании на Smalltalk (например, названия классов и методов - это символы). Например, при поиске метода ВМ ищет метод класса с селектором метода равным заданному. При этом нельзя сравнивать селекторы на равенство, так как это рекурсивно вызовет поиск метода #=. По-этому ВМ сравнивает идентичность селекторов.

Кроме того символы часто используются, когда в качестве параметра надо передать один из нескольких заранее определённых вариантов (например, #top или #bottom).

Довольно близким аналогом символов являются interned String в Java или символ LISP.

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


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

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

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

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