В Vala Tutorial проекта в Variable-Length Argument Lists, есть метод вызова показано:Vala varargspassing свойство: значение пары
Общий шаблон с переменным числом аргументов, чтобы ожидать, чередующиеся строки - пары значений в качестве аргументов, как правило, это означает GObject свойство - стоимость. В этом случае вы можете написать свойство: значение вместо этого, например: actor.animate (AnimationMode.EASE_OUT_BOUNCE, 3000, x: 100.0, y: 200.0, rotation_angle_z: 500.0, opacity: 0);
эквивалентно:
actor.animate (AnimationMode.EASE_OUT_BOUNCE, 3000, "х", 100,0, "у", 200,0, "угла поворота-Z", 500,0, "непрозрачность", 0) ;
Как я могу декодировать это? Код, показанный в статье, предназначен для более нормального прохождения всех параметров запятой. Он неправильно декодирует альтернативный стиль.
Я попытался пример кода: данный
void method_with_varargs(int fixed, ...) {
var l = va_list();
while (true) {
string? key = l.arg();
if (key == null) {
break; // end of the list
}
double val = l.arg();
stdout.printf("%s: %g\n", key, val);
}
}
И печатает
x: 0
rotation_angle_z: 0
Если я вынимаю двойной Вэл
void method_with_varargs(int fixed, ...) {
var l = va_list();
while (true) {
string? key = l.arg();
if (key == null) {
break; // end of the list
}
stdout.printf("%s: \n", key);
}
}
печатает
x:0
y:0
rotation_angle_z: 0
opacity: 0
Я предполагаю, что это должен быть другой тип, чем строка, но что?
string? key = l.arg();
Точный вызов функции был включен (и вырезано и вставлено из учебника): actor.animate (AnimationMode.EASE_OUT_BOUNCE, 3000, x: 100.0, y: 200.0, rotation_angle_z: 500.0, opacity: 0); ' – user2241515
Если это помогает - я добавил счетчик, и он выбирает это как 4 параметра:' x: 100.0, y: 200.0, rotation_angle_z: 500.0, opacity: 0', и все, что я получаю, это начало строки. Все, начиная с «:», теряется. – user2241515
Здесь я создал суть, это должно объяснить лучше. Существуют два класса Actor1 - стандартный стиль, и Actor2 использует стиль разделения двоеточия, который я задаю, как декодировать: [Varargs.vala] (https://gist.github.com/darkoverlordofdata/6ad7694a07a9332a04d0) – user2241515