为什么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;