There was some repeatable code I wrote 2-3 times. Let's make module one time and forever.
- Модуль представляет абстракцию "тип данных"
- Бывают скалярные типы
int
,bool
,string
- Бывают контейнерные типы
array<int>
,hash<int>
,function<int,int>
- Пример.
array<int>
. Массив у которого значения типаint
- Пример.
hash<int>
. Хэш у которого значения типаint
(а ключи типаstring
) - Пример.
function<bool,int,int>
. Функция возвращает свой вложенный первый тип (bool
), и принимает в качестве аргумента все остальные вложенные типы (int
,int
)
- Пример.
- Бывают структурные типы
struct{x: int, y: int}
- Это пример структуры из 2 полей типа
int
с именамиx
иy
- Это пример структуры из 2 полей типа
- Особый случай
void
. Он скалярный, но переменной этого типа быть не может. Это обозначение, что функция не возвращает никакого значенияfunction<void>
new Type 'int'
- прим. заведите себе сразу удобный alias
type = (t)-> new Type t
- прим. заведите себе сразу удобный alias
t1.cmp(t2)
сравнить два типа"my type is #{t1}"
у него есть toString(), потому он нормально вставляется в интерполяцию строк