ТОМ2: типы значений: различия между версиями
Нет описания правки |
ASBer (обсуждение | вклад) |
||
| (не показана 41 промежуточная версия 2 участников) | |||
| Строка 1: | Строка 1: | ||
{{Содержание справа}} |
{{Содержание справа}} |
||
Каждое значение в языке ТОМ2 имеет свой тип. |
|||
== Типы значений == |
|||
Каждое значение в языке ТОМ2 имеет свой тип. Узнать тип у любого значения можно через метод [[ТОМ2:type|type]] |
|||
Значение любого типа имеет набор свойств, к которым возможно обращение через точку: |
|||
---- |
|||
A.B |
|||
- где A - значение, а B - имя его свойства |
|||
=== Простые типы === |
|||
==== bool (булево) ==== |
|||
Логический тип данных. Может принимать значение "да" (true) или "нет" (false). Над данными логического типа действуют операции булевой алгебры. |
|||
==== number (число) ==== |
|||
Числовым типом может быть представлено любое целое число. Над данными числового типа действуют основные арифметические операции. |
|||
==== string (строка) ==== |
|||
Строковым типом может быть представлена любая последовательность символов, в том числе и пустая. В выражениях строка заключается в двойные кавычки - "это строка". |
|||
==== spcvalue (спецзначение) ==== |
|||
??? |
|||
Узнать тип любого значения можно через свойство ".type": |
|||
---- |
|||
var A = "test" |
|||
%{A.type} |
|||
=== Объективные типы === |
|||
==== object (объект) ==== |
|||
??? |
|||
==== property (свойство) ==== |
|||
??? |
|||
==== class (класс) ==== |
|||
??? |
|||
==== location (локация) ==== |
|||
??? |
|||
==== word (слово) ==== |
|||
??? |
|||
==== preposition (предлог) ==== |
|||
??? |
|||
==== ?? (отношение) ==== |
|||
??? |
|||
==== ?Action (Действие) ==== |
|||
??? |
|||
==== Attribute (Признак) ==== |
|||
??? |
|||
==== ?Expression (Выражение) ==== |
|||
??? |
|||
==== ?Fact (Факт) ==== |
|||
??? |
|||
==== Object (Объект) ==== |
|||
Объект. Объектным типом может быть представлен любой существующий объект. Значения этого типа предоставляют доступ к свойствам и методам объекта. |
|||
==Простые типы== |
|||
---- |
|||
К простым типам данных относятся: bool (булево), number (число), string (строка), spcvalue (спецзначение), course (направление). |
|||
===bool (булево)=== |
|||
bool – булево. Логический тип данных. Может принимать значение true ('да') или false ('нет', 'ошибка'). Над данными логического типа действуют операции булевой алгебры. |
|||
К любому булеву значению можно прикрепить текстовый комментарий. Это позволяет давать более естественные ответы чем 'да' или 'нет'. |
|||
=== Списки === |
|||
==== And-list (И-список) ==== |
|||
??? |
|||
==== Or-list (Или-список) ==== |
|||
??? |
|||
Пример: |
|||
var A = да, "вы правы" |
|||
var B = нет, "я так не думаю" |
|||
var C = ошибка, "это невозможно!" |
|||
===number (число)=== |
|||
[[Категория:Документация ТОМ]] |
|||
number – число. Числовым типом может быть представлено любое целое число. |
|||
Над данными числового типа действуют основные арифметические операции. |
|||
===string (строка)=== |
|||
string – строка. Строковым типом может быть представлена любая последовательность символов, в том числе и пустая. |
|||
В выражениях строка заключается в двойные кавычки. |
|||
Пример: |
|||
"это строка" |
|||
"это тоже пример строки типа string" |
|||
===spcvalue (спецзначение)=== |
|||
spcvalue – спецзначение. |
|||
Платформа имеет фиксированный набор [[ТОМ2: ключевые слова|служебных слов]] используемых в коде игры. |
|||
Все эти слова имеют тип "спецзначение". |
|||
В режиме "в игре" спецзначения не доступны. |
|||
===course (направление)=== |
|||
course – направление. |
|||
Всего есть десять направлений: вверх, вниз, и компасные (север, юг, запад, восток, северо-запад, северо-восток, юго-запад, юго-восток). |
|||
==Объектные типы== |
|||
К объектным типам данных относятся: 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 (объект)=== |
|||
object – объект. |
|||
Этим типом может быть представлен любой существующий уникальный единичный объект. |
|||
===property (свойство)=== |
|||
Зарезервировано. В настоящее время значения этого типа не используются. |
|||
===attribute (признак)=== |
|||
attribute - признак. ??? |
|||
===relation (отношение)=== |
|||
Зарезервировано. В настоящее время значения этого типа не используются. |
|||
===class (класс)=== |
|||
class – класс. ??? |
|||
===location (локация)=== |
|||
location – локация. ??? |
|||
===word (слово)=== |
|||
word – слово. ??? |
|||
Пример: |
|||
word дом |
|||
{ key = МрНд |
|||
defkey = ИпЕч |
|||
form АпЕч = "домо`й" |
|||
form ВпЕч = "до`м" |
|||
form ВпМч = "дома`" |
|||
form ДпЕч = "до`му" |
|||
form ДпМч = "дома`м" |
|||
form ИпЕч = "до`м" |
|||
form ИпМч = "дома`" |
|||
form ПпЕч = "до`ме" |
|||
form ПпМуЕч = "дому`" |
|||
form ПпМч = "дома`х" |
|||
form РпЕч = "до`ма" |
|||
form РпМч = "домо`в" |
|||
form ТпЕч = "до`мом" |
|||
form ТпМч = "дома`ми" |
|||
} |
|||
===preposition (предлог)=== |
|||
preposition – предлог. ??? |
|||
==Списки== |
|||
Это списки значений. К спискам относятся: and-list – и-список, or-list – или-список. |
|||
Списки можно получить, объединив значения с помощью операторов 'и' и 'или'. |
|||
Пример: |
|||
var А = "роза" и "кинжал" // А – и-список |
|||
var Б = 2 или 3 или 6 // Б – или-список |
|||
Невозможно получить списки boolean значений – для них это булева операция. |
|||
===and-list (и-список)=== |
|||
and-list (и-список) – список значений, объединённый союзом 'и'. При выводе отображается в виде строки: |
|||
значение_1, значение_2, значение_3, ... и значение_N |
|||
Невозможно получить and-list чисел – для них это эквивалентно сложению. |
|||
При запросе значения специальных свойств объекта возвращается and-list. |
|||
Пример: |
|||
X.cls // возвращает и-список с классами объекта X; |
|||
X.inside // возвращает и-список объектов, находящихся внутри объекта X; |
|||
X.outside // возвращает и-список объектов, находящихся снаружи объекта X. |
|||
===or-list (или-список)=== |
|||
or-list (или-список) – список альтернативных значений, объединённый союзом 'или'. |
|||
При выводе or-list отображается в виде строки: |
|||
значение_1, значение_2, значение_3, ... или значение_N |
|||
[[Категория:Документация ТОМ2]] |
|||
Текущая версия от 12:03, 3 мая 2014
Каждое значение в языке ТОМ2 имеет свой тип.
Значение любого типа имеет набор свойств, к которым возможно обращение через точку:
A.B
- где A - значение, а B - имя его свойства
Узнать тип любого значения можно через свойство ".type":
var A = "test"
%{A.type}
Простые типы
К простым типам данных относятся: bool (булево), number (число), string (строка), spcvalue (спецзначение), course (направление).
bool (булево)
bool – булево. Логический тип данных. Может принимать значение true ('да') или false ('нет', 'ошибка'). Над данными логического типа действуют операции булевой алгебры.
К любому булеву значению можно прикрепить текстовый комментарий. Это позволяет давать более естественные ответы чем 'да' или 'нет'.
Пример:
var A = да, "вы правы" var B = нет, "я так не думаю" var C = ошибка, "это невозможно!"
number (число)
number – число. Числовым типом может быть представлено любое целое число. Над данными числового типа действуют основные арифметические операции.
string (строка)
string – строка. Строковым типом может быть представлена любая последовательность символов, в том числе и пустая. В выражениях строка заключается в двойные кавычки.
Пример:
"это строка" "это тоже пример строки типа string"
spcvalue (спецзначение)
spcvalue – спецзначение. Платформа имеет фиксированный набор служебных слов используемых в коде игры. Все эти слова имеют тип "спецзначение". В режиме "в игре" спецзначения не доступны.
course (направление)
course – направление. Всего есть десять направлений: вверх, вниз, и компасные (север, юг, запад, восток, северо-запад, северо-восток, юго-запад, юго-восток).
Объектные типы
К объектным типам данных относятся: 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 (объект)
object – объект. Этим типом может быть представлен любой существующий уникальный единичный объект.
property (свойство)
Зарезервировано. В настоящее время значения этого типа не используются.
attribute (признак)
attribute - признак. ???
relation (отношение)
Зарезервировано. В настоящее время значения этого типа не используются.
class (класс)
class – класс. ???
location (локация)
location – локация. ???
word (слово)
word – слово. ???
Пример:
word дом
{ key = МрНд
defkey = ИпЕч
form АпЕч = "домо`й"
form ВпЕч = "до`м"
form ВпМч = "дома`"
form ДпЕч = "до`му"
form ДпМч = "дома`м"
form ИпЕч = "до`м"
form ИпМч = "дома`"
form ПпЕч = "до`ме"
form ПпМуЕч = "дому`"
form ПпМч = "дома`х"
form РпЕч = "до`ма"
form РпМч = "домо`в"
form ТпЕч = "до`мом"
form ТпМч = "дома`ми"
}
preposition (предлог)
preposition – предлог. ???
Списки
Это списки значений. К спискам относятся: and-list – и-список, or-list – или-список. Списки можно получить, объединив значения с помощью операторов 'и' и 'или'.
Пример:
var А = "роза" и "кинжал" // А – и-список var Б = 2 или 3 или 6 // Б – или-список
Невозможно получить списки boolean значений – для них это булева операция.
and-list (и-список)
and-list (и-список) – список значений, объединённый союзом 'и'. При выводе отображается в виде строки: значение_1, значение_2, значение_3, ... и значение_N
Невозможно получить and-list чисел – для них это эквивалентно сложению.
При запросе значения специальных свойств объекта возвращается and-list. Пример:
X.cls // возвращает и-список с классами объекта X; X.inside // возвращает и-список объектов, находящихся внутри объекта X; X.outside // возвращает и-список объектов, находящихся снаружи объекта X.
or-list (или-список)
or-list (или-список) – список альтернативных значений, объединённый союзом 'или'.
При выводе or-list отображается в виде строки:
значение_1, значение_2, значение_3, ... или значение_N