考虑一系列不带参数并返回相同类型的函数:
function Puzzle1 return Answer_Type;
function Puzzle2 return Answer_Type;
function PuzzleN return Answer_Type;
我希望能够将这些函数传递给子程序并让子程序调用函数并使用结果。我可以通过定义访问类型将函数传递给子程序:
type Answer_Func_Type is access function return Answer_Type;
但是,似乎没有一种方法可以实际调用传入的函数来获取结果:
procedure Print_Result(Label : in String;
Func : in not null Answer_Func_Type;
Expected : in Answer_Type) is
Result : Answer_Type;
begin
Result := Func; -- expected type "Answer_Type", found type "Answer_Func_Type"
Result := Func(); -- invalid syntax for calling a function with no parameters
-- ...
end Print_Result;
有没有办法在 Ada 中做到这一点而不向函数添加虚拟参数?