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)
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)
スライスと配列の連結を使用します。
このプログラムは、その方法を示し、コードのいくつかの問題を修正します(たとえば、配列の要素タイプを指定しなかった場合)。
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..4
1..3
B'First
B'Last
B'Range
Element_To_Ignore
B
(5,3,2,6)
ここで、より複雑なデモを作成しました。