gpt4 book ai didi

function - 如何将另一个函数返回的函数分配给函数变量?结果而不是生成函数本身

转载 作者:行者123 更新时间:2023-12-03 14:35:52 25 4
gpt4 key购买 nike

函数正在返回匿名函数。我想将结果分配给一个变量。然而编译器认为我正在尝试分配函数而不是函数的结果。我该如何解决这个问题?

program Project9;

{$APPTYPE CONSOLE}

type
TMyEvent = reference to function: string;

var
v1: TMyEvent;

function GetHandler: TMyEvent;
begin
Result := function: string
begin
Result := '';
end;
end;

begin
v1 := GetHandler; // <- Incompatible types: 'TMyEvent' and 'Procedure'
end.

注意:我确实有一个解决方法,但我希望可以在不引入包装器的情况下解决这个问题:

program Project9;

{$APPTYPE CONSOLE}

type
TMyEvent = reference to function: string;

TWrapper = record
FHandler: TMyEvent;
end;

var
v1: TMyEvent;

function GetHandler: TWrapper;
begin
Result.FHandler := function: string
begin
Result := '';
end;
end;

begin
v1 := GetHandler.FHandler; // <- works

编辑:这并不特定于匿名或任何特殊类型的函数:这​​对于任何返回该函数的函数都是实际的,甚至在第一个 Delphi 到来之前,在 Turbo Pascal 中也是如此。

最佳答案

如果您的匿名方法/函数是无参数的,则必须使用 () 进行赋值;

v1 := GetHandler();

如果没有括号,Delphi 将尝试将函数分配给变量。括号告诉它调用函数并将函数结果分配给变量。

关于function - 如何将另一个函数返回的函数分配给函数变量?结果而不是生成函数本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21245977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com