Chcę iterować przez zestaw określonych wartości. Prosty przykład poniżejDelphi for..in ustawia kolejność wyliczeń pętli
program Project1;
{$APPTYPE CONSOLE}
var
a, b: word;
wait: string;
begin
a := 0;
for b in [1,5,10,20] do
begin
a := a + 1;
writeln('Iteration = ', a, ', value = ', b);
end;
read(wait);
end.
przykładowy kod tutaj robi to, czego oczekuję i produkuje następujące
iteracji = 1, wartość = 1
iteracji = 2, wartość = 5
iteracji = 3, wartość = 10
Iteracja = 4, wartość = 20
Teraz, jeśli mogę zmienić kolejność zestawu
for b in [20,10,5,1] do
Wyjście jest takie samo jak oryginał, czyli kolejność wartości nie jest zachowana.
Jaki jest najlepszy sposób wdrożenia tego?
np. 'for b in TIntegerDynArray.Create (20,10,5,1) do' –
Dzięki za odpowiedź. Czy jest jakiś mniej rozwlekły sposób tworzenia uporządkowanych wartości tablicy? I powyższy komentarz również to potwierdza. Czasami StackOverflow jest zbyt szybki :-) – HMcG
Składnia dynamicznych tablic-konstruktorów, którą David demonstruje, jest nowsza niż pętla for-in. Istnieje kilka wersji Delphi, które mogą korzystać z tego drugiego, ale nie pierwszego, a jeśli używasz jednego z nich, to niewiele możesz zrobić. Możesz napisać własną funkcję, która przekształci otwartą tablicę w tablicę dynamiczną. –