将数组的切片分配给新数组

问题描述 投票:0回答:2

我的语法错误但似乎找不到关于我的问题的正确语法的信息页面。我有一个我正在处理的函数,它接受一个数组,我想在该数组的一个片上做一些计算,所以我想只是从传入的数组中创建一个切片数组,特别是那些索引。有人可以帮助我解决这里的语法因为这个一直告诉我missing ','

p1: UnboundArray(1 .. 15);
p1DataBits: UnboundArray(1 .. 7);
begin
    p1DataBits := (p1(3 | 5 | 7 | 9 | 11 | 13 | 15));
end;
ada gnat
2个回答
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;

3
投票

看起来你想使用slices将一个数组的一些元素复制到另一个数组。因为没有一个元素是连续的,你可能会更好地关闭aggregating,显示here,或concatenating所需的元素。

 p1DataBits : UnboundArray(1 .. 7) := p1(3) & p1(5) & p1(7) …;

你可能误读了syntaxdiscrete_range;在这种情况下,|符号“分开替代项目”,而不是代表文字delimiter

© www.soinside.com 2019 - 2024. All rights reserved.