期望Ada包函数标识符

时间:2013-03-01 00:06:58

标签: function package ada

学习Ada并试图制作一个ADT堆栈,我正在使用这个网页搞清楚。 http://www.functionx.com/ada/Lesson06.htm

eightqueens.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

我非常确定我做的一切都是正确的。

2 个答案:

答案 0 :(得分:4)

Ada不使用空括号来定义或调用函数或过程。

为了将来参考,短语“我最确定我做的一切都是正确的。”是一个红色标记,表示你几乎肯定已经某事错了。

答案 1 :(得分:3)

只是详细说明,Ada做出了一些语法决定,即恕我直言的优于你可能习惯的C语法语言。

  1. 没有参数的函数在调用中不使用空括号。这允许您将函数更改为函数调用,而无需重新编码任何客户端。
  2. 数组使用像函数调用那样的括号,而不是一些独特的语法。这允许您将数组常量更改为函数调用,而无需重新编码任何客户端。
  3. 以另一种方式来看,常量只是无参数函数的简化版本,因为当你总是返回相同的值时就可以逃脱。同样,常量数组是参数化函数调用的简化版本,因为您可以随时返回相同的值。如果您以后发现需要更复杂的实现,那不是客户关注的问题,也不应该影响他们的代码。