Структуры
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]
то данная структура будет передаваться по значению.

Массив структур
Если массив константен:
const YourStruct[] s = { { value1, value2, ... }, ...};
Иначе:
YourStruct[] s = { YourStruct() { field1=value1, field2=value2, ... }, ...};
В качестве альтернативы, если структуру YourStruct создали вы (она не является внешней), вы можете предоставить конструктор, чтобы упростить приведенное выше выражение:
public struct YourStruct {
public int field1;
public string field2;
...
public YourStruct (int field1, string field2, ...) {
this.field1 = field1;
this.field2 = field2;
...
}
}
Тогда вы сможете инициализировать массив структур так:
YourStruct[] s = { YourStruct (field1, field2, ...), ...};
Last updated
Was this helpful?