ТОМ2: типы значений: различия между версиями
ASBer (обсуждение | вклад) м (→Объектные типы) |
ASBer (обсуждение | вклад) м (→bool (булево)) |
||
Строка 15: | Строка 15: | ||
К простым типам данных относятся: bool (булево), number (число), string (строка), spcvalue (спецзначение), course (направление). | К простым типам данных относятся: bool (булево), number (число), string (строка), spcvalue (спецзначение), course (направление). | ||
===bool (булево)=== | ===bool (булево)=== | ||
− | Логический тип данных. Может принимать значение | + | bool – булево. Логический тип данных. Может принимать значение true ('да') или false ('нет', 'ошибка'). Над данными логического типа действуют операции булевой алгебры. |
+ | |||
+ | К любому булеву значению можно прикрепить текстовый комментарий. Это позволяет давать более естественные ответы чем 'да' или 'нет'. | ||
+ | |||
+ | Пример: | ||
+ | A = да, вы правы | ||
+ | B = нет, я так не думаю | ||
+ | C = ошибка | ||
+ | |||
===number (число)=== | ===number (число)=== | ||
Числовым типом может быть представлено любое целое число. Над данными числового типа действуют основные арифметические операции. | Числовым типом может быть представлено любое целое число. Над данными числового типа действуют основные арифметические операции. |
Версия 13:45, 3 мая 2014
Содержание
Каждое значение в языке ТОМ2 имеет свой тип.
Значение любого типа имеет набор свойств, к которым возможно обращение через точку:
A.B
- где A - значение, а B - имя его свойства
Узнать тип любого значения можно через свойство ".type":
var A = "test" %{A.type}
Простые типы
К простым типам данных относятся: bool (булево), number (число), string (строка), spcvalue (спецзначение), course (направление).
bool (булево)
bool – булево. Логический тип данных. Может принимать значение true ('да') или false ('нет', 'ошибка'). Над данными логического типа действуют операции булевой алгебры.
К любому булеву значению можно прикрепить текстовый комментарий. Это позволяет давать более естественные ответы чем 'да' или 'нет'.
Пример:
A = да, вы правы B = нет, я так не думаю C = ошибка
number (число)
Числовым типом может быть представлено любое целое число. Над данными числового типа действуют основные арифметические операции.
string (строка)
Строковым типом может быть представлена любая последовательность символов, в том числе и пустая. В выражениях строка заключается в двойные кавычки - "это строка".
spcvalue (спецзначение)
Платформа имеет фиксированный набор служебных слов используемых в коде игры. Все эти слова имеют тип "спецзначение". В режиме "в игре" спецзначения не доступны.
Объектные типы
К объектным типам данных относятся: object (объект), property (свойство), attribute (признак), relation (отношение), class (класс), location (локация), word (слово), preposition (предлог).
Значения этих типов подразумевают некоторую сущность, обладающую именем, свойствами и поведением.
Каждое значение объектного типа может принадлежать некоторому классу или списку классов. Класс, назначенный значению первым, является основным классом и не может быть отменён в последствии.
Тип и классы в свою очередь частично (или полностью) определяют поведение объекта.
Основное отличие типов от классов заключается в том, что поведение класса объекта программируется разработчиком стандартной библиотеки или игры, в то время как поведение типа жёстко определено разработчиком платформы.
Все значения объектных типов имеют конструктор - код выполняемый во время создания объекта.
Свойства у объекта могут быть 3х видов:
- Системные свойства: type, name, key, loc, pos и т.д. Подробнее см. [системные свойства].
- Классовые свойства - свойства унаследованные от классов объекта. Эти свойства могут быть переопределены операцией присвоения:
А.Б = В.
- Собственные свойства - определённые в конструкторе как переменная:
object A { var Б = В }.
Свойства объектов также могут быть вычисляемыми. Синтаксис вычисляемого свойства:
var А = { <код> }
Код свойства выполняется при каждом обращении к свойству объект, возвращенное значение является значением свойства.
Объект может содержать в себе множество вложенных объектов.
Смысловая интерпретация вложения одного объекта в другой может быть различной и зависит как от вида вложения так и от замысла автора игры.
Вложения объектов могут быть 3х видов:
- inside (внутри) - подразумевает расположение объектов внутри полости другого объекта. Примеры: инвентарь ГГ, содержимое сундука.
- outside (снаружи) - подразумевает расположение объектов на внешней поверхности другого объекта. Примеры: одежда ГГ, предметы на столе.
- part (часть) - подразумевает что объекты являются частями другого объекта. Примеры: руки, ноги ГГ, дверной замок.
Директивы вложения имеют следующий синтаксис:
А inside Б //объект А помешается внутрь объекта Б А outside Б //объект А помешается на поверхность объекта Б А part Б //объект А становится частью объекта Б
Обращение к вложенным объектам осуществляется через системные свойства inside, outside и part
А.inside //возвращает список объектов, находящихся внутри объекта А А.outside //возвращает список объектов, находящихся на внешней поверхности объекта А А.part //возвращает список объектов, являющихся частями объекта А
Ниже приведены описания типов объектов:
object (объект)=
Объект. Этим типом может быть представлен любой существующий уникальный единичный объект.
property (свойство)
Зарезервировано. В настоящее время значения этого типа не используются.
class (класс)
???
location (локация)
???
word (слово)
???
preposition (предлог)
???
relation (отношение)
Зарезервировано. В настоящее время значения этого типа не используются.
Attribute (Признак)
???
Списки
and-list (и-список)
???
or-list (или-список)
???