В Валы я вижу, что, когда я объявляю массив я должен указать тип, какМожно ли создать смешанный массив в вале?
int[] myarray = { 1, 2, 3 };
Интересно, есть ли способ иметь смешанный массив как
smtg[] myarray = { 1, 'two', 3 };
Я вижу, что в this question говорят, что в C++ и C# это невозможно, но я только начал изучать vala, и у меня нет фона с любым C-подобным языком, поэтому я хочу быть уверенным.
Код компилируется. Отлично ... но теперь ... как напечатать такой массив? Я не понимаю, как установить тип элемента в цикле foreach. http://pastebin.com/iZXpgQuK <- Это, очевидно, неправильно – wwr
Я не могу дать полный ответ в этой маленькой коробке, но в основном вам нужно будет сделать что-то вроде 'foreach (значение GLib.Value в значениях) {if (value.holds (typeof (int))) stdout.printf ("% d", (int) value); else if (value.holds (typeof (string))) stdout.printf ("% s", (string) value); }} '. Вероятно, вы также захотите добавить некоторую проверку ошибок, если бы это был тип, которого вы не ожидали. Для GValue существует также механизм преобразования из одного типа в другой, и большинство простых типов должны иметь поддержку для преобразования в строку, встроенную. См. GLib.Value.type_transformable и transform. – nemequ