6

検索できません | Googleで。解釈しようとしているソフトウェアのソース コードでそれを見つけた場合、それが何をするのかわからなかったし、他の人に助けを求めることもできませんでした。

4

7 に答える 7

30

この場合のパイプ演算子は、「ポップアップ ボックスのオプション/フラグとして SWT.APPLICATION_MODAL と SWT.OK の両方を使用する」ことを意味します。これは、特にビットフィールド構成識別子で非常に一般的に使用されるイディオムです。SWT や Win32 などのウィンドウ システムで。

使い方

パイプ ( | ) 演算子はビットごとの OR 演算子です。つまり、2 つのバイナリ整数値の OR 演算を計算します。APPLICATION_MODAL と OK が定義されている場所を確認すると、次のようになっていることがわかります。

...
SWT.OK = 1,                  // 00000001 in binary
SWT.ABORT_RETRY_IGNORE = 2,  // 00000010 in binary
SWT.OK_CANCEL = 4;           // 00000100 in binary
...
SWT.APPLICATION_MODAL = 32;  // 00100000 in binary
... (and so on...)

これらの数値の 2 つ (またはそれ以上) をビットごとに OR すると、オプションごとに個別のビットが設定されます。

int style = SWT.OK | SWT.APPLICATION_MODAL = 00000001 | 00100000 = 00100001

スタイルを解釈するためのウィンドウ ツールキットは、次のようにビットごとの AND を実行することで、必要なもの (モーダルで [OK] ボタンのあるポップアップ ボックス) を正確に伝えることができます。

...
if(style & SWT.OK)
{
    // we want an OK box
}
if(style & SWT.ABORT_RETRY_IGNORE)
{
    // we want an Abort/Retry/Ignore box
}
if(style & SWT.OK_CANCEL)
{
    // we want an OK/Cancel box
}
...
if(style & SWT.APPLICATION_MODAL)
{
    // We want a modal box
}
...

私の謙虚な意見では、ちょっと賢いです。単一の変数で複数の構成オプションを選択/表すことができます。秘訣は、オプションの整数定義にあり、それらが 2 のべき乗のみであることを確認します。

于 2009-09-08T21:09:42.847 に答える
11

それが何をするかについてのあなたの質問に答えるために、私は最初にそれがシンボルなのか演算子なのかを自分自身に推論します. それだけで、Google で何を検索すればよいかを理解するのに役立ちます。使用されている変数の型からもヒントが得られます。これは int 型で動作する演算子です。

それが役立つことを願っています。

于 2009-09-08T21:13:41.297 に答える
2

これはビットごとの ORであり、多くのフラグを単一の int として SWT コンポーネントに渡す手段を提供します。多くのセッター メソッドで型をオーバーロードする必要はありません。

リストする 2 つのプロパティは、親シェルの上にモーダルで表示する必要があるダイアログまたはその他のウィンドウがあることを示し、[OK] ボタンを使用します。たとえば、SWT.CANCEL と組み合わせて [OK] ボタンと [キャンセル] ボタンを表示できます。

于 2009-09-08T21:13:36.053 に答える
2

残念ながら、Google は記号が苦手です。代わりに、まずウィキペディアのページを見て、そこで「|」を検索します。これは次の場所にあります。

そのページには、何が何で、どのように使用するかについてのかなり良い概要があります.

于 2009-09-08T21:59:44.850 に答える
1

| | OR 演算子です。これらの 2 つの値はおそらく、1 ビットが設定された int であるフラグであり、結果の値は使用するスタイル値です。

于 2009-09-08T21:10:44.983 に答える
0

ビットごとの OR

ほとんどの場合、少し学習曲線があります。もし私が新しい言語を学んでいるなら、私はそれを仮定します| は演算子であり、「Java 演算子」を検索します。

于 2009-09-08T21:11:08.727 に答える
0

それを処理できる検索エンジンを使用してください。B

于 2009-09-08T21:49:14.683 に答える