我的语法错误,但似乎找不到关于我的问题正确语法的信息页。我有一个正在使用的函数,该函数需要一个数组,并且我想对该数组的一个切片进行一些计算,因此我想只根据传入的数组(尤其是那些索引)创建一个切片的数组。有人可以帮我解决一下这里的语法,因为这总是告诉我missing ','
p1: UnboundArray(1 .. 15);
p1DataBits: UnboundArray(1 .. 7);
begin
p1DataBits := (p1(3 | 5 | 7 | 9 | 11 | 13 | 15));
end;
答案 0 :(得分:3)
您似乎想使用slices将一个数组的某些元素复制到另一数组。由于所有元素都不是连续的,因此最好使用aggregating,显示为here或concatenating所需的元素。
p1DataBits : UnboundArray(1 .. 7) := p1(3) & p1(5) & p1(7) …;
您可能误读了syntax的discrete_range;在这种情况下,|
符号“分隔其他项目”,而不是表示文字delimiter。
答案 1 :(得分:3)
另一种无需昂贵连接的解决方案是分配一个直接的,显式的数组表达式:
procedure Odds is
type UnboundArray is array (Integer range <>) of Integer;
p1: UnboundArray(1 .. 15);
p1DataBits: UnboundArray(1 .. 7);
begin
p1DataBits := (p1(3), p1(5), p1(7), p1(9), p1(11), p1(13), p1(15));
end;