3

Adaを学び、スタックADTを作成しようとしています。私は、このWebページを使用してそれを理解しています。 http://www.functionx.com/ada/Lesson06.htm

エイトクイーンズ.adb

with Ada.Text_IO;
use Ada.Text_IO;
with Stack;
use Stack;

procedure EightQueens is
begin
    put_line ("awd");
end EightQueens;

stack.ads

package Stack is
    function awd () return Integer;
end Stack;

stack.adb

package body Stack is
    function awd () return integer is
    begin
        return 1;
    end awd;
end Stack;

エラーは

stack.ads:2:19: identifier expected

私はすべてを正しく行ったと確信しています。

4

2 に答える 2

4

Adaは、関数やプロシージャを定義したり呼び出したりするために、空の括弧を使用しません。

そして、将来の参考のために、「私はすべてを正しく行ったと確信しています」というフレーズ。は、ほぼ確実に何か間違ったことをしたことを示す赤い旗です。

于 2013-03-01T00:56:32.280 に答える
3

念のために説明しますが、Adaが行った構文上の決定には、IMHOがC構文言語で使用されているものよりも優れているというものがあります。

  1. パラメーターのない関数は、呼び出しで空の括弧を使用しません。これにより、クライアントを再コーディングしなくても、定数を関数呼び出しに変更できます。
  2. 配列は、いくつかの固有の構文ではなく、関数呼び出しのように括弧を使用します。これにより、クライアントを再コーディングしなくても、配列定数を関数呼び出しに変更できます。

別の見方をすれば、定数はパラメータのない関数の単純化されたバージョンであり、常に同じ値を返すことで逃げることができます。同様に、定数配列は、常に同じ値を返すことで逃げることができる場合のために、パラメーター化された関数呼び出しの単純化されたバージョンです。後でより複雑な実装が必要であることがわかった場合、それはクライアントの関心事ではなく、クライアントのコードに影響を与えるべきではありません。

于 2013-03-01T15:00:33.207 に答える