В BlitzMAX в отличие от B3d "правильные" типы, они скорее уже классы.
Type Class_Name 'называем наш тип/класс
Field object_var:String ' поле, тип переменной String
Global gvar:Int 'общая для всех объектов этого типа переменная
Function GetGvar:Int() 'статическая функция, т.е. оступна по имени типа/ класса
return gval 'например так: Class_Name.GetGval()
End function
Method GetField:String() 'метод класса, доступен только посредством объекта,
'имеет прямой доступ к полям класса относящимся к текущему объекту.
' например: Local g:Class_Name=new Class_Name; g.GetField()
return object_var
End function
'есть 2 уникальных метода New и Delete
'New - конструктор этот метод если он есть вызывается автоматически при создании нового объекта этого типа.
'Delete - деструктор, вызывается автоматически при удалении из памяти объекта этого типа
End type 'завершаем
'переменные нашего типа создаются с помощью ключевого слова New:
Local obj:MyType=new MyType 'дословно: создать новую локальную переменную типа MyType. При это для этой переменной будет вызван метод New если он есть.
Удаление переменной:
obj=Null
------
А теперь о методах хзранения полученых переменных, независимо от типа, наш ли он или встроеный, переменные можно хранить в:
* Единичной переменной ( Local a:int=15 или Local obj:MyType=new MyType)
* В массиве: Local a:int[]=new int[100] или Local obj:MyType[]=new MyType[100]
* В кольцевом списке: Local list:TList=new TList; list.AddLast("Hello")
* В индексированом списке: Local dict:TMap=New TMap; dict.Insert(obj, "First")