問題タブ [private-methods]
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.
oop - S4 参照クラスのパブリック メソッドとプライベート メソッドを宣言する方法はありますか?
前もって: R が関数型言語であることは認識しているので、噛まないでください ;-)
私は、多くのプログラムで OOP アプローチを使用して素晴らしい経験を積んできました。さて、 R でS4 参照クラスを使用するときに、パブリックメソッドとプライベートメソッドを区別する方法があるかどうか疑問に思っています。
例
クラス定義
ノート
私は通常、実際のthisIsPublic_ref
メソッド定義をクラス定義内に配置せず、次の理由でS4 メソッド (つまり ) に分離します。
- そうすれば、クラス定義は明確に配置されたままになり、個々のメソッド定義が非常に大きくなる場合でも読みやすくなります。
- これにより、いつでもメソッドの機能実行に切り替えることができます。特定のクラスのインスタンスになると、 の代わりに
x
呼び出すことができます。foo_ref(.self=x)
x$foo()
compiler::cmpfun()
「プレーンな」参照クラスメソッドがある場合は不可能だと思われるメソッドをバイトコンパイルできます。
この特定の例をそれほど複雑にすることは確かに意味がありませんが、それでもそのアプローチを説明したいと思いました。
メソッド定義
インスタンス
パブリック vs. プライベート
class のインスタンスA
(つまり) は、 classのpublicメソッドx.a
を使用できるようにする必要があります。B
class のインスタンスA
(つまりx.a
) は、 classのプライベートメソッドの使用を許可されるべきではありません。したがって、これが機能しないようにしたいと思います。つまり、エラーが発生します。B
これをどのように指定できますか?
これまでに思いついた唯一のこと:
各メソッドに引数を追加し、sender
メソッド呼び出しごとに明示的に指定して、 if を確認しますclass(.self) == class(sender)
。しかし、それは少し「明白」に思えます。
android - 自分のアプリで非公開の Samsung フレームワークを使用することはできますか?
過去 2 日間、私は自分のアプリ、特に /system/frameworks/seccamera.jar で非公開の Samsung フレームワークを使用する可能性を探っていました。まだ何も機能していないので、それが可能かどうか疑問に思っています。
いくつかの背景
QRコードのスキャンを伴うアプリケーションを開発しているため、カメラの画質に大きく依存しています。そのため、アプリケーションレベルからカメラを可能な限り制御するのに苦労しています。スキャン速度と信頼性を大幅に向上させる機能の 1 つは、カメラがスポット露出測定を行う機能です。ただし、測光モードを指定する公開 API はありません。
ただし、Galaxy Tab 2 に組み込まれているカメラ アプリを使用すると、いくつかの露出測光モードを指定でき、その中からスポット測光モードを指定できます。そこで、さらに調べてみることにしました。
私がすでに試したこと
- /system/frameworks から Eclipse を使用して組み込みカメラ アプリの apk ファイルと odex ファイルを取得しました
- odex ファイルを baksmali で実行したところ、いくつかの .smali ファイルが作成されました。
- 私はそれらを「exposureMetering」で検索し、パラメータ内部クラスを介して露出測定モードの指定をサポートするクラス com.sec.android.seccamera.SecCamera を見つけました
このクラスは seccamera.jar (seccamera.odex) にあると判断したため、個別に deodex しました。
/li>それから私はそれを再びまとめました:
/li>そして最後に、dex2jar を介して dex-file を実行し、jar ライブラリを作成しました。
/li>
これを外部 jar として Eclipse プロジェクトにリンクしました。SecCamera クラスには public android.hardware.Camera とほぼ同じ API があることがわかったので、コードの変換がはるかに簡単になりました。
プロジェクトはエラーなしでビルドされますが、起動時に次のエラーでほぼ瞬時にクラッシュします。
com.google.zxing.client.android.camera.PreviewCallback
は私のプロジェクト クラスの 1 つで、ZXing プロジェクトから借用したものなので、明らかにそこにあります。SecCamera.PreviewCallback
の代わりに実装するように変更する必要がありCamera.PreviewCallback
ました。多分これがここの犯人です。
そのエラーの前に、他にいくつかの警告があります。
それで、私はここで何が間違っていますか?(既存のアプリにパッチを適用するのではなく) カスタム アプリでプライベート フレームワークを使用することはできますか?
c++ - レイアウト互換型へのキャストを介してプライベート メンバー関数にアクセスできますか?
この質問の議論から、フードの下でC++に実装されているプライベート変数へのアクセスはどのようになっていますか? 私はバリエーションを提示しました: プライベート データ メンバーにアクセスする代わりに、キャストとレイアウト互換性に依存してプライベート メンバー関数を呼び出すことができますか?
いくつかのコード (Herb Sutter のコラムUses and Abuses of Access Rights に触発されたもの)
注: これは動作します (少なくとも Ideone では)! 新しいC++11 標準が、レイアウトの互換性と reinterpret_cast / static_cast に依存することによって、アクセス制御を回避する保証された、または少なくとも実装定義の方法を提供する方法はありますか?
EDIT1 : Ideoneでの出力
EDIT2 : Sutter のコラムで、彼は上記のコードが動作することが保証されていない理由を 2 つ挙げています (実際には動作しますが)。
a) X と BaitAndSwitch のオブジェクト レイアウトが同じであるとは限りませんが、実際には常に同じである可能性があります。
b) reinterpret_cast の結果は未定義ですが、ほとんどのコンパイラでは、ハッカーが意図した方法で結果の参照を使用しようとすることができます。
新しい C++11 標準では、これらのレイアウト / reinterpret_cast の保証が提供されるようになりましたか?
java - EasyMock と PowerMock を使用してプライベート メソッドの引数を取得する
パブリック メソッド呼び出しの場合、EasyMock の capture() を使用すると、メソッドに渡された引数をインターセプトして調べることができます。プライベート メソッド呼び出しの場合、PowerMock の expectPrivate を使用すると、プライベート メソッド呼び出しをモックできます。
これらを何らかの方法で組み合わせて、プライベート メソッド呼び出しに渡される引数を取得する方法はありますか? 例:
この場合、呼び出しlocalInstance
によって消費されるオブジェクトを調べたいと思います。privateHelperToIntercept()
プライベート メソッド呼び出しをモックする例はたくさんあります。PowerMock はうまくexpectPrivate(partiallyMockedObject, "nameOfPrivateMethod", arg1, arg2)
機能します。また、パブリック メソッド呼び出しに渡される引数をインターセプトする例も見つけました。Capture<Type> myTestCapture = new Capture<Type>()
と組み合わせるsomeMockedObject.PublicMethod(capture(myTestCapture))
。
残念ながら、この 2 つを連携させることも、それらを組み合わせた例も見つけることができません。誰もこれを行う方法を見たことがありますか?
FWIW、私は Mockito がこれを行うことができると思いますが、ソース/ビルド/テスト システムには含まれていません。可能であれば、システムで新しいライブラリをサポートするプロセスを避けたいです。
ruby-on-rails-3.1 - TwitterAPIでobject.entitiesを使用したプライベートメソッドエラー
Twitterフィードコントローラーでtweet.entitiesを呼び出そうとすると、次のエラーが発生します。
プライベートメソッド`entities'が#Twitter::Status:0x94d4bf4を呼び出しました
コード内にエンティティと呼ばれるメソッドはありません。完全なファイル検索を行って確認しました。
オブジェクトのエンティティ部分の名前を変更するか、このいわゆるプライベートメソッドがどこにあるかを見つけるか、何らかの方法でそれを迂回する必要があります。twitter_feedsコントローラー内の私のメソッドは次のとおりです。
終わり
基本的に、解析されたツイートのセットをクライアントに送信しており、サーバーでリンクラッピングなどを実現したいと考えています。
コードがこのメソッドをどこにあると見なすかを見つける方法はありますか、それとも非公開にしないか無視してtweet.entitiesを呼び出す方法はありますか?
編集:注意すべきもう1つのポイントは、エンティティモデルとエンティティコントローラーがありましたが、それらを削除しても、これを取得していることです。
ありがとう
c++ - C ++のプライベートメンバー関数の適切な命名規則?
メンバーの場合、私は
メンバー関数のプレフィックスとして使用したいのですが、またはで_
始まる名前は予約されているため、使用しないでください。_
__
私の考えは、私が持っているとき:
(libの)ユーザーがドット(.
)を書くと、。だけのすべての関数が(次々に)表示されますpublic
。
これに共通の命名規則はありますか?
pImpl
インターフェイスクラスと実装クラスを使用して、継承を使用できることを知っています
java - 内部クラスのプライベート メソッドを継承する
次のコードを見てみましょう。
そのコードがB
. A
代わりに書かれています。
クラスが含まれる内部クラスのプライベート メソッドを呼び出すことができるという事実は (少なくとも私には) 奇妙に感じるかもしれませんが (なぜそのようにしたのですか?)、しかし私が本当に理解できないのは、ポリモーフィズムがなぜそうしないのかということです。動作しません。
つまり、 fromTest.main()
を呼び出すことができれば、 A.testMethod()
call も呼び出すことは明らかB.testMethod()
です。Java はオブジェクトの動的型を判別することもできますが、なぜ Java は動的型のメソッドではなく、宣言された型のメソッドを呼び出すのでしょうか? この動作は次の方法で確認できます。
また、なぜこれが の場合にのみ発生するのTest.A.testMethod()
ですprivate
か?
cakephp - コントローラは CakePHP でプライベート関数を避けるべきですか?
CakePHP のコントローラーに、URL でアクセスできないプライベート関数を含めるべきではないかどうか疑問に思っていました。
追加や削除などの一部の関数は非常に大きく、分割した方がよい場合があります。コントローラーでプライベートにするのではなく、その関数をモデル内に配置する必要がありますか?
ありがとう。
java - ゼロ除算の例外をスローするにはどうすればよいですか?
スロープの分母が0の場合、「計算に失敗しました。x1とx2の間に変更はありません」と出力されるように例外をスローするにはどうすればよいですか...次のブロックはクラスファイル内のメソッドです。
テストファイル、またはメインメソッドを含むドライバークラスに結果を出力しています。
unit-testing - プライベートメソッドの単体テストにより、ソリューション全体が簡単になるようです
1 つの複雑な (テストが難しい) パブリック メソッドを持つユーティリティ クラス (データなし) があるとします。乱数生成を使用し、大きな配列のデータを返します。ただし、小さなプライベート メソッドで実装すると、すべてのプライベート メソッドを簡単にテストできるため、全体を簡単にテストできます。アプリケーションの観点からは、big メソッドのみをパブリックにする必要があり、もう一方はプライベートにする必要があります。それでも、プライベート メソッドをテストすると、クラスのテストが容易になります。この問題にどのようにアプローチすればよいですか?