3

学习 Ada 并尝试制作堆栈 ADT,我正在使用这个网页来解决这个问题。 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;

堆栈广告

package Stack is
    function awd () return Integer;
end 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 做出了一些语法决定,恕我直言,它优于您可能习惯于 C 语法语言的语法。

  1. 没有参数的函数在调用中不使用空括号。这允许您将内容更改为函数调用,而无需重新编码任何客户端。
  2. 数组像函数调用一样使用括号,而不是一些独特的语法。这允许您将数组常量更改为函数调用,而无需重新编码任何客户端。

换个角度来看,常量只是无参数函数的简化版本,因为当你可以摆脱总是返回相同的值时。同样,常量数组是参数化函数调用的简化版本,因为您可以始终返回相同的值。如果您后来发现需要更复杂的实现,那不是客户关心的问题,也不应该影响他们的代码。

于 2013-03-01T15:00:33.207 回答