加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 泛型类型命名

发布时间:2020-12-15 09:07:30 所属栏目:大数据 来源:网络整理
导读:我有这样的代码: TServer = classprivate fOnMsgFromServer: TProcString,String,String;public procedure RegisterOnMsgFromServer(aCallBack: TProcString,String); procedure Execute;end;procedure TServer.RegisterOnMsgFromServer(aCallBack: TProcSt
我有这样的代码:

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

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

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

问题在于程序执行当我想把参数放到fOnMsgFromServer时. “helper”显示我(Arg1:string; Arg2:string; Arg3:string),我只是不知道哪个参数是哪个.

有没有解决方案来命名这个论点?

解决方法

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

type
  TProc<T1,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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读