Хотите обработать и вернуть из функции массив кортежей, например:

[ [1, "hello", 11], [2, "world", 66] ] или [ ["hello", 1, 4, 10, "world"], ["its", 1, 2, 5, "me"] ] или другие случаи

Длина внутренних списков может быть разной и равна числу, переданному в функцию.

Есть ли какая-либо коллекция или комбинация коллекций для обработки этого?

0
llownall 7 Апр 2020 в 16:10
Вы говорите, что не знаете длину внутренних списков. Кроме того, похоже, что типы элементов внутренних списков различаются. Каковы ограничения для внутренних типов?
 – 
Andreas Rejbrand
7 Апр 2020 в 16:14
Выглядит как массив записей
 – 
David Heffernan
7 Апр 2020 в 16:14
@DavidHeffernan: Но ОП написал(а), что не знает длины «внутренних списков».
 – 
Andreas Rejbrand
7 Апр 2020 в 16:14
2
«Я не знаю длину внутренних или внешних списков». «Внутренние списки имеют одинаковую длину». Мне кажется, что вам нужно потратить совсем немного больше времени на определение спецификации проблемы. Не просите нас решить проблему, пока вы не узнаете, в чем проблема.
 – 
David Heffernan
7 Апр 2020 в 16:21
1
Не задавайте вопрос в комментариях. Задайте его в вопросе. Используйте кнопку редактирования выше. Пожалуйста, приложите больше усилий, чтобы задать ясный и точный вопрос. Время, потраченное на подготовку хорошего вопроса, имеет жизненно важное значение.
 – 
David Heffernan
7 Апр 2020 в 16:26

1 ответ

Если каждый элемент внешнего «списка» всегда является структурой данных, содержащей одно целое число, одну строку и еще одно целое число, вы должны создать тип записи для этой структуры:

type
  TCarData = record
    Size: Integer;
    Model: string;
    Year: Integer;
  end;

Затем вы можете использовать либо динамический массив таких записей, < code>TArray или общий список< /a>, TList.

Если вам нужно делать такие вещи, как добавление по одному автомобилю за раз в «список», вам определенно следует использовать общий подход TList<TCarData> (поскольку вам следует избегать добавления по одному элементу за раз в динамический массив). В противном случае подход с динамическим массивом выглядит заманчиво, поскольку тогда компилятор будет управлять временем жизни «списка» за вас — вам не нужно создавать и освобождать «списки» вручную.

С другой стороны, если внутренняя структура не зафиксирована таким образом, вы можете позволить внутренним объектам быть массивами Variant: TArray<Variant>. Таким образом, весь «список» будет иметь тип TArray<TArray<Variant>>.

Тогда каждый элемент во внешнем «списке» представляет собой массив произвольной длины значений любого простого типа, не являющегося указателем: целые числа, числа с плавающей запятой, строки и т. д.

1
Andreas Rejbrand 7 Апр 2020 в 16:24