Struct — это структура данных, которая позволяет использовать инкапсуляцию, пусть и в ограниченном виде.
Struct необходимо создавать во внешнем файле, а не в самом Врангле. Создайте внешний файл так, как это описано в этом вопросе: http://hipnc.club/ufaqs/custom-functions/
Struct может содержать как поля, так и методы (если пользоваться терминологией ООП).
// Упрощенный пример использования структуры для создания двумерного массива
struct IntArray
{
int _xSize;
int _array[];
void Create(int xSize, ySize)
{
_xSize=xSize;
resize(_array, xSize*ySize);
}
int Value(int x, y)
{
return _array[y*_xSize + x];
}
void Set(int x, y, value)
{
_array[y*_xSize + x] = value;
}
}
После этого во Врангле делаем #include с именем вашего файла. Обращаться к структуре можно следующим образом:
#include "arrays.h"
IntArray arr;
arr->Create(10,10);
arr->Set(3,5,1000);
printf("Array value: %d", arr->Value(3,5));
printf("Array X size: %d", arr._xSize);
К «полям» мы обращаемся через знак «точка», а к «методам» через «->».
Также у структур есть конструктор, проще говоря их можно инициализировать следующим образом:
MyStruct var = MyStruct(10, 20, "String");
То есть мы используем название структуры в качестве функции и перечисляем в аргументах значения для всех полей.
Обратите внимание, что в Вексе нельзя создать массив массивов, даже если вы закрыли свой массив в структуре. То есть если планируется сделать массив структур, то внутри структуры не может быть массивов. Как вариант обхода этого ограничения: создать в структуре функцию, которая возвращает массив, а сам массив уже хранить в теле этой функции, тогда ошибки не будет.