泛型类型命名
Generics types naming
我有这样的代码:
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;
我有这样的代码:
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;