Хотите обработать и вернуть из функции массив кортежей, например:
[ [1, "hello", 11], [2, "world", 66] ]
или [ ["hello", 1, 4, 10, "world"], ["its", 1, 2, 5, "me"] ]
или другие случаи
Длина внутренних списков может быть разной и равна числу, переданному в функцию.
Есть ли какая-либо коллекция или комбинация коллекций для обработки этого?
1 ответ
Если каждый элемент внешнего «списка» всегда является структурой данных, содержащей одно целое число, одну строку и еще одно целое число, вы должны создать тип записи для этой структуры:
type
TCarData = record
Size: Integer;
Model: string;
Year: Integer;
end;
Затем вы можете использовать либо динамический массив таких записей, < code>TArrayTList
.
Если вам нужно делать такие вещи, как добавление по одному автомобилю за раз в «список», вам определенно следует использовать общий подход TList<TCarData>
(поскольку вам следует избегать добавления по одному элементу за раз в динамический массив). В противном случае подход с динамическим массивом выглядит заманчиво, поскольку тогда компилятор будет управлять временем жизни «списка» за вас — вам не нужно создавать и освобождать «списки» вручную.
С другой стороны, если внутренняя структура не зафиксирована таким образом, вы можете позволить внутренним объектам быть массивами Variant
: TArray<Variant>
. Таким образом, весь «список» будет иметь тип TArray<TArray<Variant>>
.
Тогда каждый элемент во внешнем «списке» представляет собой массив произвольной длины значений любого простого типа, не являющегося указателем: целые числа, числа с плавающей запятой, строки и т. д.
Похожие вопросы
Новые вопросы
delphi
Delphi - это язык для быстрой разработки собственных приложений для Windows, macOS, Linux, iOS и Android с использованием Object Pascal. Название относится к языку Delphi, а также к его библиотекам, компилятору и IDE, которые используются для помощи в редактировании и отладке проектов Delphi.