ТОМ2: типы значений: различия между версиями

Материал из IFВики
Перейти к навигации Перейти к поиску
м (Списки)
м (or-list (или-список))
 
(не показано 39 промежуточных версий 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]]
 
[[Категория:Документация ТОМ2]]

Текущая версия на 14: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