問題タブ [information-hiding]
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.
c - Cで「保護された」typedefを作成する方法はありますか?
本題に入る場合は、最後の 2 段落までスキップしてください。私の苦境とそれを解決するために私が取った手順に興味がある場合は、以下を読み続けてください.
現在、インターンシップの一環として C ライブラリの一部を開発しています。当然のことながら、コードにはユーザーがアクセスできない部分とアクセスできる部分があります。私は基本的に、いくつかのアーキテクチャに最適化された乱数ジェネレーター (RNG) (一様、ガウス、および指数分散数) を開発しています。後者の 2 つの RNG は、別のカーネル (プロジェクト) にあるユニフォーム ジェネレーターに依存しています。したがって、ユーザーが複数の RNG を使用したい場合は、メモリに制約があるため、コードを不必要に複製しないようにしたいと考えています (同じ関数を同じ関数を異なるアドレスで複数回定義しても意味がありません)。コード セグメント)。
ここで問題が発生します。ライブラリ内の他のすべてのカーネルの規則は、2 つのヘッダー ファイルと 2 つの C ファイル (自然な C 実装と最適化された C バージョン (いくつかの組み込み関数とアセンブリを使用し、および/またはいくつかの制限がある場合があります) にそれぞれ 1 つ) があることです。これに続いて、メイン関数が配置された別の C ファイル (テストベンチ) が続き、両方の実装をテストして結果を比較します. とは言っても、追加のヘッダー ファイルを実際に追加することはできません。プライベートまたは保護されたアイテムも、これらすべてのジェネレーターにグローバル ヘッダー ファイルを追加することもできません。
この制限に対処するために、各 C ファイルの先頭にある#defineではなく、均一な RNG に依存する C ファイルでextern関数とextern const intを使用して、コードの移植性を高め、簡単に変更できるようにしました。一箇所。これはほとんどの場合うまくいきました。
ただし、注意が必要なのは、これらのカーネル内で内部型を使用していることです (これはユーザーに表示されるべきではなく、ヘッダー ファイルに配置されるべきではありません)。繰り返しになりますが、移植性のために、このtypedefの定義を複数のカーネルの複数の場所ではなく、1 つの場所で変更できるようにしたいと考えています。これは、ライブラリが後で別のプラットフォームで使用される可能性があり、アルゴリズムが機能することが重要であるためです。 32ビット型を使用しています。
したがって、基本的に、Cでtypedefを「保護」する方法があるかどうか疑問に思っています。つまり、それを必要とするすべてのCファイル間で表示される必要がありますが、ユーザーには表示されません。ヘッダー ファイルの 1 つに含めることができますが、プロジェクトにそのヘッダー ファイルを含めるユーザーには、それが何であれ、見えてはなりません。
============================編集===================== ===========
また、使用している typedef が unsigned int であることにも注意する必要があります。それで
typedef unsigned int myType
構造は関係ありません。
============================スーパーエディット==================== ======
stdint.h の使用も禁止されています :(
python - デコレーターがクラスのプライベート メンバーにアクセスしても問題ありませんか?
Web ページのプロファイルへのインターフェイスを提供するために、HTML を解析するクラスを作成しています。次のようになります。
より複雑で時間がかかることを除いて。基礎となるプロファイルがProfile
オブジェクトの存続期間中に変更されることはないことがわかっているので、既にわかっている値の再計算を避けるために、ここに結果をキャッシュするのに適した場所になると考えました。これをデコレータで実装したところ、結果は次のようになりました。
このコードを pylint に渡すcached_resource
と、クライアント クラスの保護された変数にアクセスできるというエラーが表示されます。
パブリックとプライベートの区別は Python では大した問題ではないことはわかっていますが、まだ興味があります。ここで何か悪いことをしたのでしょうか? 関連付けられているクラスの実装の詳細にデコレーターを依存させるのはスタイルが悪いのでしょうか?
編集:ダンカンの答えのクロージャーがどのように機能するかは不明です。そのため、これは少し面倒ですが、これはより簡単な解決策でしょうか?
java - カプセル化とデータ非表示?
これは重複した質問かもしれませんが、まだ答えが見つかりません。
カプセル化:
カプセル化は、クラス内のフィールドをプライベートにし、パブリック メソッドを介してフィールドへのアクセスを提供する手法です。フィールドがプライベートであると宣言されている場合、クラス外のユーザーはそのフィールドにアクセスできないため、 クラス内にフィールドが隠されます。このため、カプセル化はデータ隠蔽とも呼ばれます。
カプセル化:
「それは[…]カプセルを構築することを指し、場合によっては概念的な障壁であり、いくつかのもののコレクションの周りにある.」— [Wirfs-Brock ら、1990 年]
「プロセスとしてのカプセル化とは、[…] コンテナ内に 1 つ以上のアイテムを封入する行為を意味します。エンティティとしてのカプセル化とは、1 つ以上のアイテムを保持 (収容、封入) するパッケージまたはエンクロージャを指します。」
「カプセル化が『情報隠蔽と同じこと』であるとすれば、『カプセル化されたものはすべて隠されている』という議論をする人もいるかもしれません。これは明らかに真実ではありません。」
どれと一緒に行けばいいですか?それとも定義を誤解していますか?
java - スーパーを使用しないサブクラス メソッドのデフォルトの動作は何ですか?
を呼び出さなくても、サブクラスのメソッドにデフォルトの動作を定義する可能性はありますsuper
か?
例:boolean
スーパークラスに値を設定し、これをサブクラスから非表示にしたいとします。ブール値の変更を非表示にする方法はありますか? 次の基本クラスがあるとしますBaseTest
およびそのサブクラスTest
:
を呼び出さなくても、 を呼び出して値をTest.initialize()
に設定したいと思います。スーパークラスで抽象関数を定義することも同様に避けたいと思います。これは可能ですか?mIsInitialized
true
super.initialize()
coffeescript - CoffeeScript オブジェクトの内部状態を隠す
CoffeeScript Ristrettoから次を見てください。
変更することは可能ですqueue.head
- http://jsfiddle.net/VQLNG/。
上記の関数を公開しないようにするにはどうすればよいhead
ですか?
android - Android アプリケーションに小さな「情報」ボタンを追加する方法
この質問は簡潔に提起するのが難しいと感じているため、これがまだ回答されていないかどうかはよくわかりませんが、とにかく難しいと感じました。
私が欲しいのは、たとえば、私は EditText を持っており、プロンプトは一部の人にとっては意味があるかもしれませんが (ちょっとしたヒント)、他の人にとっては、もう少し説明/または例が必要かもしれないと感じています.
そのため、EditText の横に情報を表す小さな丸い「i」ボタンが必要です。私がこのボタンに望んでいるのは、タッチすると、トースト ウィンドウが表示され、目的のヘルプ情報が表示されることです。
ユーザー エクスペリエンスだけで、私が取り上げている機能をイメージできると思います。しかし、私が想像している方法で、これを行う素晴らしい方法を見つけることができないようです.
さて、あなたが知っているどこかでこれの明確な例がすでにある場合、リンクは素晴らしいでしょう.そうでない場合は、いくつかの説明付きのコードが素晴らしいでしょう. 私は Java と Android の開発は初めてですが、ゆっくりと、しかし確実にそこに到達しています。
ヘルプやヒントをありがとうございました。
architecture - Go に状態を保存する
言語を学ぶための練習として、Go で簡単なプログラムを書いています。プログラムはゲーム プレーヤーです。exec.Command
テキスト ベースのゲームであり、StdinPipe
/を介して通信しStdoutPipe
ます。いろいろいじってたくさんのオンライン ドキュメントを読んだ後、なんとかスケルトンが機能するようになりました。Hello World に相当するもので、双方向通信を確立し、プログラムの終了などのエラーを処理できます。
現在、実際にゲームをプレイする AI コードを作成しようとしています。私の目的は言語を学ぶことなので、スタイルには細心の注意を払っています。単に C (または他の言語) を Go で書きたいだけではありません。
プログラム内の明らかな作業分担 (すべてのセットアップが完了すると) は、2 つの部分に分けられます。まず、プログラムは現在の状態を調べて、ゲームに発行するコマンドを決定します。次に、プログラムは返されたデータを確認し、それに応じて状態を更新します。(はい、単純なゲームです。入力を待ってから応答します。タイミングの問題はありません。)
この状態情報がどこに行くべきかわかりません。すべてをグローバルスコープにダンプするのは間違っているように感じ、巨大なシングルトンオブジェクトを作成するのはさらに悪いように思えます (そして Go は特に OO ではありません)。いずれにせよ、関数が 20 以上の変数を渡して返すようにしたくありません。
一般的なアドバイスでも構いませんが、慣用的に Go に適しているものに最も関心があります。リクエストに応じてコードを共有できますが、役に立たないと思います。
java - テストケースのJavaクラスファイルにパスワードを隠す
私は、すべての従業員が私が作成したすべての Java ファイルにアクセスできる会社の jenkins サーバーに配置されるセレン テスト ケースを作成しようとしています。
私がやりたいのは、そこに「パスワード」を表示しないことです。他の従業員に私のパスワードを見られたくないのです。それを行う方法はありますか?