Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么pascal禁止方法';s参数和类';谁是数据成员?_Pascal_Name Conflict - Fatal编程技术网

为什么pascal禁止方法';s参数和类';谁是数据成员?

为什么pascal禁止方法';s参数和类';谁是数据成员?,pascal,name-conflict,Pascal,Name Conflict,将触发编译器错误 我认为一个self或指针/引用足够清晰。那么,这样做的好处是什么 编辑:还有一个问题,您是否可以显示部署此策略的其他语言?以防止在参数名称会影响类成员时发生名称冲突。这不可能以这种方式发生,每个名字都是明确的 请记住,帕斯卡是一个;这些都是为了防止常见错误 防止感知问题的另一个选项是Python所做的:强制使用this或self对实例成员进行限定,以便必须使用self作为每个实例成员访问的前缀 不过,我不知道还有哪种语言有这样的限制。但有些语言特征确实是独一无二的;例如,选中的

将触发编译器错误

我认为一个
self
指针/引用足够清晰。那么,这样做的好处是什么


编辑:还有一个问题,您是否可以显示部署此策略的其他语言?

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

请记住,帕斯卡是一个;这些都是为了防止常见错误

防止感知问题的另一个选项是Python所做的:强制使用
this
self
对实例成员进行限定,以便必须使用
self
作为每个实例成员访问的前缀


不过,我不知道还有哪种语言有这样的限制。但有些语言特征确实是独一无二的;例如,选中的异常也有。

以防止在参数名称会遮挡类成员时发生名称冲突。这不可能以这种方式发生,每个名字都是明确的

请记住,帕斯卡是一个;这些都是为了防止常见错误

防止感知问题的另一个选项是Python所做的:强制使用
this
self
对实例成员进行限定,以便必须使用
self
作为每个实例成员访问的前缀


不过,我不知道还有哪种语言有这样的限制。但有些语言特征确实是独一无二的;例如,检查过的异常也有。

似乎是
约束和纪律
,但它确实允许从
整数
短整数
的赋值。好吧,语言设计者只能想到这么多的情况。您不能在编译器中阻止它们。我认为,好的古老的停顿问题可能会影响到这一点:-)我从未见过帕斯卡教科书将语言描述为“束缚和纪律”。听起来像是来自其他语言的嫉妒:-)哦,语言设计师通常不喜欢这样的描述。只是当你不得不做一些复杂的事情让人们在需要的情况下工作时,试图阻止人们犯愚蠢的错误往往适得其反。例如,上述约束可能会导致代码生成器过度使用匈牙利符号来防止名称冲突(否则将是无害的),这可能会让不得不与生成的代码交互的人感到痛苦。不是最好的例子,但可能还有更多。+1用于在技术消息中使用“约束和约束”,以及链接到Ward的Wiki。似乎
约束和约束
,但它允许从
整数
分配到
短整数
。语言设计者只能想到这么多情况。您不能在编译器中阻止它们。我认为,好的古老的停顿问题可能会影响到这一点:-)我从未见过帕斯卡教科书将语言描述为“束缚和纪律”。听起来像是来自其他语言的嫉妒:-)哦,语言设计师通常不喜欢这样的描述。只是当你不得不做一些复杂的事情让人们在需要的情况下工作时,试图阻止人们犯愚蠢的错误往往适得其反。例如,上述约束可能会导致代码生成器过度使用匈牙利符号来防止名称冲突(否则将是无害的),这可能会让不得不与生成的代码交互的人感到痛苦。这不是最好的例子,但可能还有更多。+1用于在技术消息中使用“约束和纪律”,以及链接到Ward的Wiki。
type
    TPerson = class(TObject)
        name : string;
        constructor create(name : string);
    end;