【发布时间】:2019-11-23 06:49:35
【问题描述】:
我有一个参数,它的名称与 with/do 范围内的过程相同。经过数小时的调查,我意识到了这一点,但现在我正在寻找一种比重命名参数更好的解决方案。
Procedure Test(Param:TMyTape);
begin
with TSomeClass.Create do
try
AClassFunc(Param); // << There is a Param method inside TSomeClass
finally
free;
end;
end;
TSomeClass 中的 Param 方法使 Param 参数无用。如果Param 方法的结果类型与Param 参数相同,那么编译器甚至不会注意到。
Q:是否可以参考Param参数解决这个问题,不需要重命名Param
另一种解决方案可能是为 TSomeClass 声明一个变量并且不使用 with/do 子句。我也不在找这个。
【问题讨论】:
-
据我所知,我说:您已经概述了这两种解决方案。我认为没有一种语法可以允许您真正想要的东西。我建议你放弃
with并将对象分配给一个变量。 -
Ime,
with只会产生可避免的问题。 -
我的强烈建议是去重命名你的
Param参数。事实上,避免对法米和方法使用相同的名称。为什么? Delphi 实际上是唯一允许这样做的 Object Pascal 编译器。例如,如果您将代码移植到 FPC 中,您将遇到一大堆重复名称错误。此外,如果您遵循 Delphi 代码格式规范,所有函数参数的名称中都应该有A前缀。
标签: class delphi parameters delphi-xe6