为什么pascal禁止方法的参数和类的数据成员使用相同的标识符名称?

时间:2010-01-15 15:58:36

标签: pascal name-conflict

type
    TPerson = class(TObject)
        name : string;
        constructor create(name : string);
    end;

会触发编译器错误。

我认为selfthis指针/引用足够好,因为它的清晰度。那么,这样做有什么好处呢?

编辑:还有一个问题,您能否说明部署此政策的其他语言是什么?

1 个答案:

答案 0 :(得分:3)

防止名称冲突,其中参数名称将影响类成员。它不可能以这种方式发生,每个名字都是明确的。

请记住,Pascal是bondage-and-discipline language;这些旨在防止常见错误。

防止出现问题的另一个选择是Python所做的事情:要求thisself对实例成员进行限定,以便拥有为每个实例成员访问设置前缀与self

但我不知道有任何其他语言有这种限制。但是一些语言特征确实是独特的;例如,检查例外情况也是如此。