なぜパスカル同じメソッドのパラメータの識別子名とクラスのデータメンバを禁止していますか?

StackOverflow https://stackoverflow.com/questions/2072883

  •  20-09-2019
  •  | 
  •  

質問

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

コンパイラのエラーが表示されます。

私はselfまたはthisポインタ/参照がその明確にするため、十分に良いと思います。だから、そうすることの利点は何ですか?

編集:もう一つの問題は、このポリシーを展開する他の言語が何であるかを示すことができた。

役に立ちましたか?

解決

パラメータ名がクラスメンバをシャドウする名前の衝突を防ぐために。それはちょうどこのように起こることができないと、すべての名前があいまいでます。

パスカルはボンデージ-と規律の言語であることを覚えておいてください。これらは、一般的なエラーを防ぐためにしようとするように設計されています。

の知覚の問題を防止するための別のオプションは、Pythonが何をするかです:あなたはthisを持つすべてのインスタンスメンバへのアクセスの前に付けるためにのHAVE のをするようselfまたはselfでインスタンスメンバーの資格を義務付ける

私は、しかし、その制限と他の言語を知りません。しかし、いくつかの言語機能は確かにユニークです。例えばチェック例外もあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top