HMc*_*McG 13 delphi enumeration
我想迭代一组特定的值.简单的例子如下
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.
Run Code Online (Sandbox Code Playgroud)
这里的示例代码完成了我的预期并产生以下内容
迭代= 1,值= 1
迭代= 2,值= 5
迭代= 3,值= 10
迭代= 4,值= 20
现在,如果我改变集合的顺序
for b in [20,10,5,1] do
Run Code Online (Sandbox Code Playgroud)
输出与原始输出相同,即不保留值的顺序.
实现这个的最佳方法是什么?
Rob*_*edy 20
集合不是有序容器.您无法更改集合内容的顺序.for-in循环总是按数字顺序迭代集合.
如果您需要一个有序的数字列表,那么您可以使用数组或TList<Integer>
.
var
numbers: array of Word;
begin
SetLength(numbers, 4);
numbers[0] := 20;
numbers[1] := 10;
numbers[2] := 5;
numbers[3] := 1;
for b in numbers do begin
Inc(a);
Writeln('Iteration = ', a, ', value = ', b);
end;
end.
Run Code Online (Sandbox Code Playgroud)
Ric*_*iwi 11
您可以声明常量数组而不是常量数组.
program Project1;
{$APPTYPE CONSOLE}
var
a, b: word;
wait: string;
const
values: array[0..3] of word = (20,5,10,1);
begin
a := 0;
for b in values do
begin
a := a + 1;
writeln('Iteration = ', a, ', value = ', b);
end;
read(wait);
end.
Run Code Online (Sandbox Code Playgroud)
在数学中,一组没有特定的顺序.
在pascal中,集合是bitmap
集合中存在的元素的内存表示(在由基类型定义的可能元素的范围内).
你无法"改变"一组的顺序,因为根据定义,它对它毫无意义.
作为pascal的内存表示,该集合总是"按顺序"迭代.
归档时间: |
|
查看次数: |
19067 次 |
最近记录: |