В Ada, у меня есть следующие спецификации файла:инициализации переменной в родовом теле пакета, используя возвращаемое значение функции
GENERIC
TYPE Item IS PRIVATE; --type of array
size : integer; --size of array
PACKAGE gwar IS
function get_size return integer;
END gwar;
И тело файла:
with Ada.Text_Io;
use Ada.Text_Io;
package body gwar is
--Get_Size allows the txt file to specify how much space to allocate.
function get_size return Integer is
Filename : String := "win.txt";
File : Ada.Text_IO.File_Type;
Line_Count : Integer := 0;
ReturnSize : Integer;
begin
Ada.Text_IO.Open(File => File,
Mode => Ada.Text_IO.In_File,
Name => Filename);
while Line_Count /= 1 loop
declare
Line : String := Ada.Text_IO.Get_Line(File);
begin
ReturnSize := Integer'Value(Line);
Line_Count := 1;
end;
end loop;
Ada.Text_IO.Close (File);
return ReturnSize;
end get_size;
begin
null;
end gear;
То, что я хочу сделать, это установить мой size
integer к значению, возвращаемому get_size
. Как я могу это сделать? Я попытался поставить свою функцию перед моей переменной size
в спецификационном файле, но ожидал окончания файла. Я попытался установить size : integer := gwar.get_size
, но это тоже не работает. Это возможно?
Ваш размер var является частью общей спецификации. Вам нужно переместить его за пределы общей спецификации, создать экземпляр своего родословного, а затем вызвать функцию get_size. – NWS
Вы можете сделать общий формальный 'размер' режима' in out' - [ARM 12.4] (http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-12-4.html) –