1. ホーム
  2. scala

[解決済み] private[this] vs private

2022-08-27 19:50:55

質問

Scalaでは、object-private変数のような機能があります。私のあまり豊かでないJavaのバックグラウンドから、私はすべてを閉じて(プライベートにする)、必要であれば開く(アクセス権を提供する)ことを学びました。Scalaはさらに厳しいアクセス修飾子を導入しています。デフォルトで常にそれを使うべきでしょうか?それとも、同じクラスのオブジェクトであっても、フィールドの値の変更を明示的に制限する必要があるような特定の場合にのみ使うべきでしょうか?言い換えれば、以下のどちらかを選択すればよいのです。

class Dummy {
    private var name = "default name"
}

class Dummy {
    private[this] var name = "default name"
}

2番目はより厳密で、私は好きですが、常に使うべきでしょうか、それとも強い理由がある場合のみ使うべきでしょうか?

編集しました。私が見たところ はこちら private[this] は単なるサブケースで、代わりに this パッケージ、クラス、シングルトンオブジェクトなどの修飾子を使うことができます。というわけで、特殊なケースを想定して残しておくことにします。

どのように解決するのですか?

どのような変更であっても、どちらか一方のクラスにしか触れないので、あまり重要ではないと思います。ですから private よりも protected 以上 public は適用されません。

使用する private[this] を使用します(この方法ではメソッドの代わりにフィールドに直接アクセスすることができます)。そうでない場合は、1つのスタイルに決めておけば、人々がなぜ この プロパティが private であり その private[this] .