2012-01-16 10 views

答えて

9

つまり、ある種の明示的な参照を使用する必要があります。それはこのという名前のC++/C#の/ Javaのとは異なり、すべての

まず、あなたが望む任意の名前を使用することができます。 明示的な呼び出しを使用する必要がある理由は、Matlab designers decisionです。 オブジェクトは、あたかも 構造体であるかのように、オブジェクトに対するMatlabベクトル演算をサポートするという考え方でした。暗黙のオブジェクトパラメータを持つ言語が暗黙オブジェクトにアクセスするには、「この」キーワード を提供するが、彼らは通常、この「を通じて プロパティにアクセスする必要はありません

:次は、上記のリンクから断片であります" MATLABが暗黙的なプロパティを持っていた場合、配列ベースのオブジェクトへの論理 の拡張は、何もインデックス化しないことになります。
S = S +(k)。値;

編集:@AndrewJankeの良いコメントに続いて 、私はMATLABはこのとして暗黙的な参照を持っていたことができることを追加したい、とだけ力は、アレイベースのオブジェクトのインデックスにそれを使用します。それにもかかわらず、このアプローチはMATLABデザイナーによって選ばれていませんでした。

+0

Pythonクラスのメソッドは、明示的なインスタンス参照に 'self'という名前を付ける必要はありません。 MATLABのように、これも規約です。 –

+0

@AndréCaron、ありがとう、私は私の答えを更新しました。 –

+0

この記事では、リンクされた記事の「複数のオブジェクトパラメータの間の対称性」と斜めに言及される複数のディスパッチの中心的な理由を見落としていると思います。例えば。 'f(A、B、C)'のメソッドの場合、いずれかの入力がメソッドディスパッチオブジェクトであるか、概念的にはピアである可能性があるため、先験的に 'this'になるはずはありません。 'f(2、3、X)'と呼ぶこともできます。暗黙的な 'this'パラメータを持つことで、索引付けの問題を解決できます。オーバーロードされた' [] 'を呼び出すと、C++のようにメソッド内で '()'インデックスを使用しているときに使用するだけです。 (私は思います) –

関連する問題