問題タブ [access-specifier]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1138 参照

ruby - シングルトンパターン、プライベートメソッド、シングルトンモジュール

Rubyでシングルトンパターンと戦っています。

シングルトンがオブジェクトの単一インスタンスを実装することは知っていますが、シングルトンモジュールなしでそれを複製できるかどうかはよくわかりません。

次に、プライベートメソッドに問題があります。今、私はこのようなことをしなければなりません:

だから私の質問は:

  1. 上記は良いシングルトンパターンですか?
  2. これにより、インスタンスが1つだけになるようになりますか?
  3. シングルトンモジュールを使用してプライベートメソッドを作成する方法はありますか?
0 投票する
2 に答える
1533 参照

ruby-on-rails - Ruby/Rails でプライベートまたは保護された属性をどのように指定しますか?

Ruby/Rails でプライベートまたは保護された属性をどのように指定しますか?

すべての DB フィールドは自動的に属性になり、モデルで定義する必要はありませんか?

おすすめのチュートリアルはありますか?

Rails 3.0.7 での作業。

0 投票する
1 に答える
72 参照

java - 別のパッケージからアクセスする必要があるメソッドのデフォルトの可視性を維持することの難しさ

MineSweeperを開発しています。その中で私は3つのパッケージを持っています。1.frontEnd 2.backEnd 3.mineSweeperControl.

mineSweeperControlには、 ActionListener を実装するクラス ActionSplicerが含まれています。frontEndには、 splicerobj[i][j] がボタン [i][j] をリッスンするように、JBUTTONSの配列とActionSplicerオブジェクトの配列があります。(1 対 1 の対応)

backEndには、object[i][j] がMineValue、isCellEmpty、isCellFlagged などのボタン [i][j] の背景の詳細​​を持つようなオブジェクトの配列が含まれています...

メソッドdoBackgroundAction(i,j){..}クラス BackEndManagerで定義されています。ActionSplicerのactionPerformedでは、doBackgroundAction (i,j)を呼び出して、フォアグラウンドの変更がバックグラウンドにも影響するようにします。

私の問題はどこですか?

doBackGroundAction (i,j)は別のパッケージで呼び出されるため、公開する必要があります。

しかし、柔軟性が低下する可能性があり、誰でも属性の値を変更できるため、メソッドを公開したくありません。

フロントエンドで ActionSplicer オブジェクトの配列を作成しているため、クラス BackEndManager を拡張できません。

したがって、doBackGroundAction(i,j) の宣言について何らかのガイダンスが必要です。避けられない状況でメソッドをパブリックとして宣言するのが正しい方法かどうか? または、デフォルトの可視性でメソッドを保持するように設計を変更するにはどうすればよいですか。

0 投票する
10 に答える
37497 参照

java - 他のパッケージのクラスからパッケージプライベートクラスにアクセスするにはどうすればよいですか?

私は次のクラスを持っています

Hello.java

Hi.java

CustomMap.java

publicアクセス指定子をから削除するまで、これは正常に機能しますCustomMap

コンパイラはそれを叫ぶ

タイプspeak.hi.CustomMapは表示されませ

変更するオプションがない場合(サードパーティのjarなど) 、speak.hi.CustomMapまだ使用できる方法はありますか?CustomMapspeak.hello.Hello


私が知っているオプションの1つは、Now Helloがパッケージに含まれているため、パッケージのプライベートクラスにアクセスできるようにすることですspeak.hello.Hellospeak.hi.Hellospeak.hiHi


これを行う他の方法はありますか?おそらく反射を使用していますか?


編集:@StephenCの要求に応じて追加の詳細で更新

0 投票する
2 に答える
460 参照

ruby - Rubyのプライベートメソッドと保護されたメソッド

次のコードが機能します。

ただし、me​​thod_bの呼び出しをに変更してもself.method_b機能しません。

取得しNoMethodErrorます。selfインスタンスメソッド内でクラスのインスタンスに解決されるという印象を受けています。なぜself.method_b問題が発生するのですか?

注:がに変更されself.method_bた場合に機能します。privateprotected

注:上記のメソッドがクラスメソッドに変更された場合、self.method_bmethod_aから呼び出しても。はスローされませんNoMethodError

0 投票する
1 に答える
111 参照

ruby - トップレベルのメソッド: オブジェクトのプライベート インスタンス メソッドになるのはなぜですか? なぜ公開しないのですか?

オブジェクトのRubyプライベートインスタンスメソッドでトップレベルメソッドを作成する理由は何ですか? それらが何らかの形で公開された場合、それはどのように状況を変えるでしょうか?

0 投票する
1 に答える
1951 参照

ruby - Ruby - private メソッドのインライン宣言

現在、プライベートにすることを検討しているメソッドがコード全体に分散されているクラスを作成しています。行を追加してprivateその下にすべてをコピーして貼り付けるのではなく、クラスの先頭でprivate :foo, :bar.

ただし、パラメーターを持つメソッドをプライベート インラインとして宣言しようとすると、エラー メッセージが表示されます。たとえば、 methodfoo(bar, baz)があり、それを private で宣言しようとすると、代わりにandをprivate :foo(bar, baz)期待して、2 つの括弧にエラー メッセージが表示されます。kEND=

で宣言しようとすると、コードにprivate :fooそのようなメソッドがないと言われfooます。

これらのエラーが発生しないようにするにはどうすればよいですか?

0 投票する
3 に答える
459 参照

c++ - C ++複数の継承、基本クラスの可視性、および恐ろしいダイヤモンド。祖先の基本クラスをパブリックとして再公開しますか?

基本クラスを保護することで、多くのインターフェイスを抽象化する必要がありますが、単純な祖先クラスへのパブリックアクセスも必要Objectです。これらの祖先への書き込み/編集アクセスなしで恐ろしいダイヤモンドを交渉し、基本的なAPIのみを提示し、ObjectのAPIを再び公開することはできますか?

0 投票する
3 に答える
4282 参照

ruby-on-rails - プライベートまたはプロテクトの使用をいつ検討する必要がありますか?

モデルのいくつかのメソッドでprivate実際にいつ使用する必要があるのでしょうか。protected

メソッドをグループ化するのに煩わされないことprivateもありprotectedます。そのままにしておきます。しかし、それは悪い習慣であるに違いないことを私は知っています。さもなければ、これらの2つのグループはプログラミングで作成されません。

ありがとう。

0 投票する
2 に答える
4174 参照

ruby - Rubyクラスの初期化(コンストラクター)はプライベートメソッドですか、それともパブリックメソッドですか?

初期化メソッド(コンストラクター)はrubyでプライベートまたはパブリックですか?