Ada Genericパッケージでは、入力した要素を扱うパッケージがある場合、パッケージが動作していることを実証したい場合、Integerを表示するために2つの別個のクライアントプログラムを実行する必要があります。フロート、または私は同じプログラムですべてを行うことができますか?Ada汎用パッケージの場合
答えて
汎用パラメータには、パッケージに渡される汎用データタイプを印刷するための汎用プロシージャパラメータが含まれている必要があります。これにより、データ型は何でも可能になり、汎用パッケージのライターは出力の仕方に関心を持つ必要はありません。
generic
type element_type is private;
with procedure Print(Item : element_type);
package gen_pack is
...
end gen_pack;
IIUC、「内側」のパッケージには、あまりにも、少なくとも限りテストが行くように、外側のパッケージの一般的な形式的なタイプに依存ものです。次に、2つのケースがあります。
内側のパッケージは、
Integer_Text_IO
よう無地のパッケージであれば、それだけで符号付き整数型を扱うことができ、それはコンパイル時のことです。内部パッケージは、外部汎用パッケージの汎用正式タイプを使用してインスタンス化することによって得られる種類のものです。最初のケースで
Integer_Text_IO
が浮動小数点オペランドのために作られていないため、コンパイラが行うが、拒否することができるものは、ありません。したがって、別々のテストケースを設定する必要があります。
2番目のケースでは、結果は「内部インスタンス」に依存します。コンパイラは、型が与えられたときにジェネリックパッケージを作成することができないため、存在する汎用パッケージのみをインスタンス化することができます。後者は、正式な要件に合致していなければなりません。つまり、外部ジェネリックとインスタンス化される内部ジェネリックのジェネリックフォーマルタイプが一致しなければなりません。すなわち、range <>
とdigits <>
のような相互に排他的なカテゴリからのものであってはなりません。
時には、1がそれ外ジェネリックの仮パラメータとすることにより、「内側のジェネリック」の要件を指定することができることを考えると、価値がある:
generic
type X (<>) is limited private;
package Taking_Any is
-- ... operations for both FPT and integer types
end Taking_Any;
generic
type T is private;
with package Works_With_Any is new Taking_Any (<>);
package Outer is
package Any_Instance is new Taking_Any (T);
end Outer;
- 1. VHDLの汎用パッケージ
- 2. 複数のパッケージが使用されている場合、汎用関数を定義する場所と方法
- 3. Adaの汎用関数をC++にエクスポートできますか?
- 4. Adaの効率的で合理的なパッケージ仕様(ADS)構造
- 5. 汎用コンテナ工場
- 6. 複合体の汎用GetById
- 7. 2つの異なる汎用引数を使用して汎用関数を呼び出す場合
- 8. 配列インデックスのAda型の競合
- 9. Windows CE用Adaツールチェーン
- 10. Autofacと汎用インターフェースの工場
- 11. アーム・プロセッサ用のAdaコンパイラ
- 12. Ada - "random"の不正使用
- 13. Javaの汎用リンクリストの連合
- 14. Ada、私のパッケージをチェックしてください。 ( "compilation unit expected"?)
- 15. 名前変更コア道場パッケージ道場1.6を使用する場合は
- 16. Ada。
- 17. パッケージ名に変数を使用する場合の構文は?
- 18. MNPパッケージを使用した場合のメモリリークR
- 19. Python Anacondaパッケージを使用している場合のImportError
- 20. パッケージ 'taskscheduleR'は使用できません(Rバージョン3.2.1の場合)
- 21. ライブラリクラスを再利用する場合のパッケージ名
- 22. DifferentialEquations.jl Juliaパッケージを使用した場合のメソッドエラー
- 23. 汎用タイプの競合ですか?
- 24. テンプレートクラスの場合、非汎用メンバ関数は重複しますか?
- 25. 標準コンテナにC++汎用インサート?私は、次のプログラムがある場合
- 26. AutoFacで汎用複合型を使用して汎用タイプを登録する
- 27. npmパッケージを公開する場合は、
- 28. Djangoパッケージを使用している場合、TemplateDoesNotExist
- 29. dplyrパッケージを使用する場合、コンマクラスを保持する
- 30. なぜC#とAdaの汎用パラメータには同等のものがありませんか?
あなたは何度でもとして一般的なパッケージをインスタンス化することができます単一のプログラムで、さまざまなタイプのような異なる汎用パラメーターを使用したいとします。それぞれには独自の名前がありますので、あいまいさはありません。 –
しかし、私はAda.Integer_Text_IOを持っているとしましょう。プログラム全体を通して、整数または浮動小数点のどちらを行うかが固定されています –
Ada.Float_Text_IOはfloatを実行します。あなたは両方とも "一緒にいる"ことができます。 Put(2)が別の関数を呼び出す間、Put(2.0)は1つの関数を呼び出します。 –