我的问题非常简单,我的输入看起来像这样……
0 0 0 1 1 1 -1 -1 -1 1我需要将这些值存储到数组中,但我无法弄明白。这就是我所拥有的……
即使已经回答了这个问题,我还想对Jere的答案进行一些改进。
使用End_Of_File而不是异常来终止递归更像Ada。此外,它使程序更清晰。
此外,使用尾调用递归而不是正常递归允许编译器执行一些优化。
function Get_Ints(input : in File_Type) return Integer_Array is function Get_Ints_Rec(accumulator : in Integer_Array) return Integer_Array is value : Integer; begin if End_Of_File(input) then return accumulator; else begin Get(input, value); exception when Data_Error => -- problem when reading if not End_Of_Line(input) then Skip_Line(input); end if; return Get_Ints_Rec(acc); end; return Get_Ints_Rec(accumulator & (1 => value)); end if; end Get_Ints_Rec; acc : constant Integer_Array(1 .. 0) := (others => 0); begin return Get_Ints_Rec(acc); end Get_Ints;