gpt4 book ai didi

delphi - 泛型类型命名

转载 作者:行者123 更新时间:2023-12-03 15:46:10 26 4
gpt4 key购买 nike

我有这样的代码:

TServer = class
private
fOnMsgFromServer: TProc<String, String, String>;
public
procedure RegisterOnMsgFromServer(aCallBack: TProc<String, String, String>);
procedure Execute;
end;

procedure TServer.RegisterOnMsgFromServer(aCallBack: TProc<String, String, String>);
begin
fOnMsgFromServer := aCallBack;
end;

procedure TServer.Execute;
begin
fOnMsgFromServer('userName', 'password', 'message');
end;

问题出在当我想将参数传递给 fOnMsgFromServer 时执行的过程。 “helper”向我展示了(Arg1:字符串;Arg2:字符串;Arg3:字符串),我只是不知道哪个参数是哪个。

有什么解决方案来命名这个参数吗?

最佳答案

如果您使用通用 TProc<T1,T2,T3>,则无法避免这些通用名称类型。它的声明如下所示:

type
TProc<T1,T2,T3> = reference to procedure (Arg1: T1; Arg2: T2; Arg3: T3);

如您所见,这就是名称的由来。如果您使用这种类型,您将不得不使用这些名称。

相反,您应该声明一个定制的引用过程类型,而不是使用泛型类型。这不仅可以让您为参数赋予有意义的名称,还可以让您不再一遍又一遍地重复自己。

type
TMsgFromServerProc = reference to procedure(UserName, Password, Msg: string);

TServer = class
private
fOnMsgFromServer: TMsgFromServerProc;
public
procedure RegisterOnMsgFromServer(aCallBack: TMsgFromServerProc);
end;

关于delphi - 泛型类型命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40385187/

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