2

adaで1つを除くすべての要素を割り当てる方法は?

私がこれを持っているなら

element_to_ignore : integer := 3;
a : array(1..4) := (5,3,2,6);
b : array(1..a'length-1) := a( all but element_to_ignore );

この結果が必要です:
b =(5,3,6)

4

1 に答える 1

9

スライスと配列の連結を使用します。

このプログラムは、その方法を示し、コードのいくつかの問題を修正します(たとえば、配列の要素タイプを指定しなかった場合)。

with Ada.Text_IO; use Ada.Text_IO;
procedure Foo is
    Element_To_Ignore : Integer := 3;
    type Array_Of_Integer is array(Positive Range <>) of Integer;
    A : Array_Of_Integer(1..4) := (5,3,2,6);
    B : Array_Of_Integer(1..A'Length-1)
        := A(A'First .. Element_To_Ignore-1) &
           A(Element_To_Ignore+1 .. A'Last);
begin
    for I In B'Range Loop
        Put_Line(Integer'Image(B(I)));
    end loop;
end Foo;

Aとの宣言の境界を省略してB、初期化から境界を取得させることもできます。Element_To_Ignoreが1の場合、はではなくB境界を持つことを意味します。ハードワイヤード定数を使用するのではなく、、、を一貫して参照している限り、これは問題にはなりません。また、0または5に設定すると、に設定されることも意味します。2..41..3B'FirstB'LastB'RangeElement_To_IgnoreB(5,3,2,6)

ここで、より複雑なデモを作成しました。

于 2012-12-13T02:41:59.360 に答える