問題タブ [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.
ruby - シングルトンパターン、プライベートメソッド、シングルトンモジュール
Rubyでシングルトンパターンと戦っています。
シングルトンがオブジェクトの単一インスタンスを実装することは知っていますが、シングルトンモジュールなしでそれを複製できるかどうかはよくわかりません。
次に、プライベートメソッドに問題があります。今、私はこのようなことをしなければなりません:
だから私の質問は:
- 上記は良いシングルトンパターンですか?
- これにより、インスタンスが1つだけになるようになりますか?
- シングルトンモジュールを使用してプライベートメソッドを作成する方法はありますか?
ruby-on-rails - Ruby/Rails でプライベートまたは保護された属性をどのように指定しますか?
Ruby/Rails でプライベートまたは保護された属性をどのように指定しますか?
すべての DB フィールドは自動的に属性になり、モデルで定義する必要はありませんか?
おすすめのチュートリアルはありますか?
Rails 3.0.7 での作業。
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) の宣言について何らかのガイダンスが必要です。避けられない状況でメソッドをパブリックとして宣言するのが正しい方法かどうか? または、デフォルトの可視性でメソッドを保持するように設計を変更するにはどうすればよいですか。
java - 他のパッケージのクラスからパッケージプライベートクラスにアクセスするにはどうすればよいですか?
私は次のクラスを持っています
Hello.java
Hi.java
CustomMap.java
public
アクセス指定子をから削除するまで、これは正常に機能しますCustomMap
コンパイラはそれを叫ぶ
タイプspeak.hi.CustomMapは表示されません
変更するオプションがない場合(サードパーティのjarなど) 、speak.hi.CustomMap
まだ使用できる方法はありますか?CustomMap
speak.hello.Hello
私が知っているオプションの1つは、Now Helloがパッケージに含まれているため、パッケージのプライベートクラスにアクセスできるようにすることですspeak.hello.Hello
。speak.hi.Hello
speak.hi
Hi
これを行う他の方法はありますか?おそらく反射を使用していますか?
編集:@StephenCの要求に応じて追加の詳細で更新
ruby - Rubyのプライベートメソッドと保護されたメソッド
次のコードが機能します。
ただし、method_bの呼び出しをに変更してもself.method_b
機能しません。
取得しNoMethodError
ます。self
インスタンスメソッド内でクラスのインスタンスに解決されるという印象を受けています。なぜself.method_b
問題が発生するのですか?
注:がに変更されself.method_b
た場合に機能します。private
protected
注:上記のメソッドがクラスメソッドに変更された場合、self.method_b
method_aから呼び出しても。はスローされませんNoMethodError
。
ruby - トップレベルのメソッド: オブジェクトのプライベート インスタンス メソッドになるのはなぜですか? なぜ公開しないのですか?
オブジェクトのRubyプライベートインスタンスメソッドでトップレベルメソッドを作成する理由は何ですか? それらが何らかの形で公開された場合、それはどのように状況を変えるでしょうか?
ruby - Ruby - private メソッドのインライン宣言
現在、プライベートにすることを検討しているメソッドがコード全体に分散されているクラスを作成しています。行を追加してprivate
その下にすべてをコピーして貼り付けるのではなく、クラスの先頭でprivate :foo, :bar
.
ただし、パラメーターを持つメソッドをプライベート インラインとして宣言しようとすると、エラー メッセージが表示されます。たとえば、 methodfoo(bar, baz)
があり、それを private で宣言しようとすると、代わりにandをprivate :foo(bar, baz)
期待して、2 つの括弧にエラー メッセージが表示されます。kEND
=
で宣言しようとすると、コードにprivate :foo
そのようなメソッドがないと言われfoo
ます。
これらのエラーが発生しないようにするにはどうすればよいですか?
c++ - C ++複数の継承、基本クラスの可視性、および恐ろしいダイヤモンド。祖先の基本クラスをパブリックとして再公開しますか?
基本クラスを保護することで、多くのインターフェイスを抽象化する必要がありますが、単純な祖先クラスへのパブリックアクセスも必要Object
です。これらの祖先への書き込み/編集アクセスなしで恐ろしいダイヤモンドを交渉し、基本的なAPIのみを提示し、Object
のAPIを再び公開することはできますか?
ruby-on-rails - プライベートまたはプロテクトの使用をいつ検討する必要がありますか?
モデルのいくつかのメソッドでprivate
実際にいつ使用する必要があるのでしょうか。protected
メソッドをグループ化するのに煩わされないことprivate
もありprotected
ます。そのままにしておきます。しかし、それは悪い習慣であるに違いないことを私は知っています。さもなければ、これらの2つのグループはプログラミングで作成されません。
ありがとう。
ruby - Rubyクラスの初期化(コンストラクター)はプライベートメソッドですか、それともパブリックメソッドですか?
初期化メソッド(コンストラクター)はrubyでプライベートまたはパブリックですか?