Ada のパラメーターがモードレスのままになっている場合、どうなりますか?
違いは何ですか
procedure my_func ( param_1 : in param_type )
と
procedure my_func ( param_1 : param_type )
私はADAを初めて使用し、ほとんどの手順を後者として書いています。プログラムは期待どおりにコンパイルおよび実行されます。
Ada のパラメーターがモードレスのままになっている場合、どうなりますか?
違いは何ですか
procedure my_func ( param_1 : in param_type )
と
procedure my_func ( param_1 : param_type )
私はADAを初めて使用し、ほとんどの手順を後者として書いています。プログラムは期待どおりにコンパイルおよび実行されます。
違いはありません。パラメーター モードが指定されていない場合、コンパイラは "in" を想定します。
http://www.ada-auth.org/standards/12rm/html/RM-6-1.html 18/3 から始まる行を参照してください。
-- マーティン
マーティンが提案したように、提供されていない場合、デフォルトのモードは 'in' です。
可能であれば、疑問に思っていることを試してみることもできます。以下の簡単なコードを見てください。引数 'no_1' にモードを指定していません。ご覧のとおり、「no_2」の値を割り当てています。
with Ada.Text_IO; use Ada.Text_IO;
procedure just_testing is
procedure get_value (no_1 : Integer);
procedure get_value (no_1 : Integer) is
no_2 : Integer := 2;
begin
no_1 := no_2;
end get_value;
begin
Put("auto mode");
end just_testing;
そして、このコードをコンパイルすると、エラーとして何が表示されるかを見てください。
>gnatmake just_testing.adb
gcc -c just_testing.adb
just_testing.adb:10:09: assignment to "in" mode parameter not allowed
gnatmake: "just_testing.adb" compilation error
したがって、コンパイラは、デフォルト モードが「in」であることを明確にします。これは、モード in では引数に値を割り当てることができないためです。