問題タブ [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 投票する
3 に答える
230 参照

ruby - Ruby のインポートされたメソッドは常にプライベートですか?

これは、次の例で最もよく説明されています。

ファイル1.rb:

ファイル2.rb:

「': プライベート メソッド 'foo' が呼び出されました」というエラーが表示されます。

これを回避することはできますがA.new.send("foo")、インポートされたメソッドを公開する方法はありますか?

編集:明確にするために、私はincludeとrequireを混同していません。また、通常のインクルージョンを使用できない理由 (多くの人が正しく指摘しているように) は、これがメタプログラミング セットアップの一部であるためです。ユーザーが実行時に機能を追加できるようにする必要があります。たとえば、「run-this-app --include file1.rb」と言うと、file1.rb に記述したコードに基づいてアプリの動作が異なります。申し訳ありませんが、より明確に説明する必要がありました。

編集:Jorgの答えを読んだ後、私のコードが意図したとおりに動作しないことに気付き、彼は私の(見当違いの)質問に完全に答えました。もっと似たようなことをしようとしていますstr=(entire file1.rb as string); A.class_exec(str)

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

ruby - メソッドテスト内で使用されるプライベートインスタンス変数を設定するにはどうすればよいですか?

いくつかのインスタンス変数といくつかのメソッドを持つクラスがあるとします。一部のインスタンス変数はattr_reader、およびを介してアクセス可能に設定されていますattr_accessor。したがって、他はプライベートです。
一部のプライベートインスタンス変数は、インスタンスメソッドの1つで設定され、別のメソッドで読み取られて利用されます。

テストにはRSpecを使用しています。私はまだRubyに慣れておらず、すべてを正しくしたいと思っているので、テストをかなりきめ細かく定義しました。したがってdescribe、インスタンスメソッドごとに1つのブロックがあり、それ自体がcontextsとitsのサブセットに分割されています。一般的な環境の前提条件は、で定義されbeforeます。

ただし、プライベート変数の1つを使用しているが設定していないメソッドの1つをテストする場合は、この変数を設定しているもう1つのメソッドを呼び出す必要があります。これはかなり太りすぎで、私にはモジュール式ではないようです。

プライベートインスタンス変数を特定の値に強制する方法はありますか?。を使用してプライベートインスタンス変数の値を「リッピング」するのと同様Object::instance_eval(:var)です。

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

c++ - 「保護されたインターフェイス」を構築するかどうかをどのように決定する必要がありますか?

差出人:http://www.parashift.com/c++-faq-lite/basics-of-inheritance.html#faq-19.9

3つのキー:ROI、ROI、ROI。

構築するすべてのインターフェースには、コストとメリットがあります。構築するすべての再利用可能なコンポーネントには、コストとメリットがあります。すべてのテストケース、すべてのきれいに構造化されたもの、あらゆる種類の投資。その投資にプラスの見返りがない場合は、いかなる時間やお金も投資してはいけません。それがあなたの会社にそれが節約するより多くの費用がかかるならば、それをしないでください!

誰もがこれについて私に同意するわけではありません。彼らには間違っている権利があります。たとえば、現実の世界から十分に離れて住んでいる人々は、すべての投資が良いように振る舞います。結局のところ、彼らは、あなたが十分長く待つならば、それはいつか誰かの時間を節約するかもしれないと推論します。多分。望みでは。

その推論の全行は専門家ではなく、無責任です。あなたには無限の時間がないので、賢く投資してください。確かに、象牙の塔に住んでいる場合は、「スケジュール」や「顧客」と呼ばれる厄介なことを心配する必要はありません。しかし、現実の世界では、あなたはスケジュールの範囲内で仕事をしているので、あなたはあなたが良い見返りを得るところだけにあなたの時間を投資しなければなりません。

元の質問に戻ります。保護されたインターフェイスの構築にいつ時間を費やす必要がありますか?回答:その投資に対して十分な見返りが得られたとき。1時間かかる場合は、1時間以上誰かを節約できることを確認し、節約が「いつか虹の彼方に」ならないようにします。現在のプロジェクト内で1時間節約できるのであれば、それは簡単です。いつか他のプロジェクトを1時間節約できるとしたら、そうしないでください。そしてそれがその中間である場合、あなたの答えはあなたの会社が現在に対して未来をどのようにトレードオフするかによって正確に異なります。

要点は簡単です。スケジュールを損なう可能性のあることをしないでください。(または、そうする場合は、決して私と一緒に作業しないようにしてください。私はあなたの頭を大皿に置きます。)その投資の見返りがあれば、投資は良いことです。素朴で子供っぽくならないでください。成長して、いくつかの投資は、バランスをとって、彼らが返すよりも多くの費用がかかるので、悪いことに気づきます。

さて、これをC++で保護されたインターフェイスに関連付ける方法がわかりませんでした。

このFAQが何について話しているかを示すために、実際のC++の例を教えてください。

0 投票する
6 に答える
82637 参照

java - Javaのデフォルトアクセス指定子と保護アクセス指定子の違い

私はJavaを学ぼうとしていましたが、アクセス指定子を調べたときに疑問がありました. 何も指定されていない場合のデフォルトのものとJavaの保護されたアクセス指定子の違いは何ですか?

0 投票する
7 に答える
27156 参照

ruby - 「プライベート」、「パブリック」、および「保護されたメソッド」の違いは何ですか?

私はRubyを学んでいて、混乱するところまで来ました。

private私が使用している本は、public、およびについて述べてprotected methodsいますが、まだ少し混乱しています。それぞれの違いは何ですか?

0 投票する
4 に答える
2378 参照

c++ - フレンド関数は同じファイルにある必要がありますか?

私は実際にファイルをテストしていますが、main.cppからクラスの保護されたメンバーの一部にアクセスする必要がある状況があります。友達として追加しようとしましたがmain()、うまくいかず、うまくいかないことがわかったので、すべてをに移動しmain()て友達test ()にしtest()ました。それでもエラーが表示されます。

例は

// 34行目にエラーが表示されます:Base::valueは保護されています。ご意見をお聞かせください。

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

c# - MVC3 でプライベート プロパティにアクセスできるようにする方法

私は Mvc3 と NHibernate を使用しています。次のようなアクティベーション コードと呼ばれるクラスがあります。

コントローラーでこのフィールドにアクセスしたい

しかし、それを取得できません。なぜ?

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

c++ - Why the member function can still be accessed even if it is declared as "private"?

Possible Duplicate:
Public virtual function derived private in C++

#xA;

The output of the program is "D::show() called.", which means the virtual function declared in the private part of class D is invoked. Don't you think it weird? How could a private member of a class be accessed from outside?

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

c++ - 派生クラスの仮想関数へのアクセシビリティをいつ制限する必要がありますか?

次のコードを検討してください。

この問題について、私は 2 つの異なる考え方を聞いたことがあります。

1) ユーザーは static_cast を使用してアクセスできるため、基本クラスと同じようにアクセシビリティを維持します。

2) 関数をできるだけ非公開にする。ユーザーが a->Foo() を必要とし、b->Foo() を必要としない場合、Derived::Foo は非公開にする必要があります。必要に応じていつでも公開できます。

どちらか一方を好む理由はありますか?

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

c# - C#:メンバーのアクセシビリティ修飾子が(必須ではなく)オプションなのはなぜですか?

Eric Lippert によるこの非常によく書かれたブログ投稿を読みましたが、アクセシビリティ修飾子の特定のケースについて説明していません。

従来のスタックオーバーフローの知恵では、常に「プライベート」を明示的に指定するように言われています。これは、メンバーが修飾子を必要とする必要があることを意味します。