タグ付けされた質問 「private-methods」

30
JavaScriptプライベートメソッド
パブリックメソッドでJavaScriptクラスを作成するには、次のようにします。 function Restaurant() {} Restaurant.prototype.buy_food = function(){ // something here } Restaurant.prototype.use_restroom = function(){ // something here } そうすれば、私のクラスのユーザーは次のことができます。 var restaurant = new Restaurant(); restaurant.buy_food(); restaurant.use_restroom(); buy_foodおよびuse_restroomメソッドによって呼び出すことができるが、クラスのユーザーによって外部からは呼び出せないプライベートメソッドを作成するにはどうすればよいですか? 言い換えれば、私は私のメソッド実装ができるようにしたいです: Restaurant.prototype.use_restroom = function() { this.private_stuff(); } しかし、これはうまくいかないはずです: var r = new Restaurant(); r.private_stuff(); private_stuffこれらの両方が成り立つようにプライベートメソッドとして定義するにはどうすればよいですか? Doug Crockfordの記事を何度か読んだことがありますが、「プライベート」メソッドをパブリックメソッドから呼び出したり、「特権」メソッドを外部から呼び出したりすることはできないようです。

11
リフレクションを使用してプライベートメソッドを呼び出すにはどうすればよいですか?
私のクラスにはプライベートメソッドのグループがあり、入力値に基づいて動的に呼び出す必要があります。呼び出しコードとターゲットメソッドの両方が同じインスタンスにあります。コードは次のようになります。 MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType); dynMethod.Invoke(this, new object[] { methodParams }); この場合、GetMethod()プライベートメソッドは返されません。プライベートメソッドを見つけBindingFlagsられるGetMethod()ようにするには、何を提供する必要がありますか?

11
非constメソッドがプライベートのときにpublic constメソッドが呼び出されないのはなぜですか?
このコードを考えてみましょう: struct A { void foo() const { std::cout << "const" << std::endl; } private: void foo() { std::cout << "non - const" << std::endl; } }; int main() { A a; a.foo(); } コンパイラエラーは次のとおりです。 エラー: 'void A :: foo()' is private`。 しかし、私がプライベートのものを削除すると、それはうまくいきます。非constメソッドがプライベートのときにpublic constメソッドが呼び出されないのはなぜですか? 言い換えると、なぜ過負荷解決がアクセス制御の前に来るのですか?これは奇妙です。一貫していると思いますか?コードが機能してからメソッドを追加しましたが、機能しているコードがまったくコンパイルされません。

9
Rubyのプライベートモジュールメソッド
2つの質問があります ベストプラクティス 公開インターフェースを使用してデータ構造に対して何らかの操作を実行するアルゴリズムがあります 現在、多数の静的メソッドを持つモジュールであり、1つのパブリックインターフェイスメソッドを除いてすべてプライベートです。 すべてのメソッド間で共有する必要があるインスタンス変数が1つあります。 これらは私が見ることができるオプションです、どれが最高ですか?: モジュールの静的(ルビーで「モジュール」)を持つメソッド 静的メソッドを持つクラス データ構造に含めるMixinモジュール そのデータ構造(非常に小さい)を変更するアルゴリズムの部分をリファクタリングし、アルゴリズムモジュールの静的メソッドを呼び出すミックスインを作成します。 テクニカルパーツ プライベートModuleメソッドを作成する方法はありますか? module Thing def self.pub; puts "Public method"; end private def self.priv; puts "Private method"; end end privateそこには何ら影響を与えていないようです私はまだ呼び出すことができ、Thing.priv問題なく。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.