0
私はAdaにとって非常に新しいので、なぜポインタを使って手続きを呼び出すためにAcc.all、またはd.allを書く必要があるのだろうかと思います。私は.allがレコードのためのものであると思った。それは他のレコードの値と等しいレコードの値を設定できるからだ。同時に私はなぜ私がその関数を呼び出すときにそうする必要がないのだろうと思っています。私のコードを参考にしてください。 AnimalPKG.Animals(Total、3,2,1)を忘れてください。パッケージをインポートする方法を練習中です。Ada。プロシージャをポインタから呼び出すためにはなぜ<< procedurename.all >>が必要ですか?
with AnimalPKG, Ada.Text_IO, Ada.Integer_Text_IO;
use Ada.Text_IO, Ada.Integer_Text_IO;
procedure Main is
procedure thisisaccess is
begin
Put("thisisaccess");
end thisisaccess;
Type accessprocedure is access procedure;
procedure passinfunction(d : accessprocedure) is
begin
d.all;
end passinfunction;
function times5(a : Integer) return Integer is
begin
return a*5;
end times5;
Type times5access is access function(x : Integer) return Integer;
B : times5access := times5'Access;
Acc : accessprocedure;
Acc2 : accessprocedure; //Modification
Total : Integer;
begin
Acc := thisisaccess'Access; //Modification
Acc2 := Acc; //Modification
Acc2.all; //Modification
AnimalPKG.Animals(Total, 3,2,1);
Put(Total);
Acc.all;
passinfunction(Acc);
Put(B(3));
end Main;
それは感謝します、ありがとう。参考のため、オリジナル投稿のコードを少し修正しました。 –