甲府方重信Blog

...Shigenobu Koufugatas Blog

  • Increase font size
  • Default font size
  • Decrease font size
Error
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
Home 業務日誌 Adaプログラミング Adaチュートリアル セクション18.5 - パラメーター型

Adaチュートリアル セクション18.5 - パラメーター型

E-mail Print PDF

セクション 18.5 - パラメーター型

さて、わたしは、これらのすべての操作に対するパラメータの型の定義をどうするかについて説明してきませんでした。Adaは、いくつかの異なった選択を提供しています。 - プログラマーは、特定の型の名前を使うこともできますし、クラス型全体を使うこともできますし、「アクセスモード」を使うこともできますし、通常のモードを使うこともできます(inin out、もしくは out)。もしプログラマーが特定のパラメーターを切り替えたいのであれば、プログラマーは次のどちらかを定義することが出来ます。:

  procedure Look(Actor : in Occupant);      -- Option 1.
  procedure Look(Actor : access Occupant);  -- Option 2.

Option 1に対しては、プログラマーは見るためにOccupantを渡します。; Option 2においては、プログラマーは、Occupant値へのアクセスを渡します。二つは切り替えるでしょう。双方は上書き可能です。プログラマーは同じプログラムにおいて両方のアプローチを使うことが出来ます。(双方を変換するのはそれほど大変ではありません)。個人的には、わたしは問題と考える方法にOption2が近いように思います。それは、わたしがプログラムSmall全体において必要に応じて使っています。なぜ、よろ自然だと思うのでしょうか。さて、わたしはThingがシミュレートされた世界においておかれていると考えています。そして、これらのサブプログラムは単純にそれらへの参照を渡すのです。プログラマーは、異なった人々は環境に応じて、異なった嗜好を持っていることがわかります。

プログラマーは、操作を切り替える必要がないならば、次のように操作を定義することが出来ます。:

  procedure X(Actor : in Occupant'Class);       -- Option 3.
  procedure X(Actor : access Occupant'Class);   -- Option 4.
  procedure X(Actor : in Occupant_Access);      -- Option 5.

Option 3は、基本的にわたし達が型がOccupantクラスのメンバーである限り、全ての方を受け取ることが出来ます。Option 4は、わたし達が型がOccupant'Classのメンバーである限り、全てのアクセス値を取ることが出来ます。Option 5は、どこかで定義されているアクセス型を使用します。そして、もしその型(Occupant_Access)がOccupant'Classのアクセス値として定義されていれば、それはかなりOption 4に近いものとなります。一つ重要な例外としては、Option 6はnull値を渡すことが出来ます。

このように、もしアクセス値を渡す場合や、null値を許可したい場合、わたし達はパラメーター型として「Occupant_Access」を使用すべきです。そうでない場合、もしわたし達がnull値を渡す必要がなければ、わたし達はOption 4を使うことができます。(そこでは、アクセス値を同じように使うことが出来ます)。

一般的に、もしプログラマーがOption 1を使用する場合には、プログラマーはOption 3 を使うことでしょう。もしプログラマーがOption 2を使う場合には、プログラマーがOption 4とOption 5を使うことでしょう。(null値を許可したいかどうかによって変わります)。 プログラマーは自身の問題についてどのように考えるかによって、主に選択するものが変わります。 - それは、プログラマーが特定のオブジェクトをどのように渡すかについて考えた場合、もしくは、それらのオブジェクトのアクセス値(参照)を渡そうと考えるかによります。プログラマーの答えは、プログラマーが何を使うべきかを示唆します。

以前に言及した関数「Me」についてはわたし達はどのようにしたらよいでしょう。 多分、将来のバージョンでは、プレーヤーに、モンスターやアイテムのコマンドを許可することになり、そのため、関数「Me」はOccupant_Accessを返り値として返すことになるでしょう。

この時点では、わたし達はLook、Quit、Get、Drop、Inventryをどのように実装するかの基本的なアイディアを持っているに過ぎません。

出典: http://www.adahome.com/Tutorials/Lovelace/s18s5.htm

Last Updated on Wednesday, 09 January 2013 07:00  

ニュース速報

http://d.hatena.ne.jp/sesejun/20100902/p1

http://downloads.whamcloud.com/public/lustre/lustre-1.8.6-wc1/el5/server/i686/