Структуры

struct StructName {
    public int a;
}

определяет структурный тип, т. е. составной значимый тип. Структура в Vala может в некоторых случаях иметь методы и закрытые члены, значит надо явно использовать модификатор доступа public.

struct Color {
    public double red;
    public double green;
    public double blue;
}

Так вы можете инициализировать структуру:

// без вывода типов
Color c1 = Color();
Color c2 = { 0.5, 0.5, 1.0 };
Color c3 = Color() {
    red = 0.5,
    green = 0.5,
    blue = 1.0
};

// с выводом типов
var c4 = Color();
var c5 = Color() {
    red = 0.5,
    green = 0.5,
    blue = 1.0
};

Структуры - значимые типы (выделяются в стеке/встраиваются и копируются при присваивании).

-----------------------------

SimpleType

Если перед объявлением структуры написать шаблон [SimpleType]то данная структура будет передаваться по значению.

Массив структур

Если массив константен:

Иначе:

В качестве альтернативы, если структуру YourStruct создали вы (она не является внешней), вы можете предоставить конструктор, чтобы упростить приведенное выше выражение:

Тогда вы сможете инициализировать массив структур так:

Last updated

Was this helpful?