1

我有一个参数,它的名称与 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;

里面有Param方法TSomeClass使Param参数无用。如果该Param方法的结果类型与参数相同Param,那么编译器甚至不会注意到。

Q : 是否可以参考Param参数来解决这个问题并且不需要重命名Param

另一种解决方案可能是为 TSomeClass 声明一个变量并且不使用 with/do 子句。我也不是在找这个。

4

1 回答 1

3

是否可以参考Param参数来解决这个问题并且不需要重命名Param?

如果您要使用with.

另一种解决方案可能是为 TSomeClass 声明一个变量并且不使用 with/do 子句。

这种方法会起作用,这就是我编写代码的方式。只有非常有限的一组场景with是合适的。这不是其中的一个。

于 2019-07-14T07:15:58.343 回答