ブール型の '&'演算子がエラーを起こし、 '& &'演算子のみを許可する(数字のビット演算に対して&演算子を許可している)ことを確認するオプションがありますか? ?Android Studio: '&'の代わりに '&&'を強制するlint?
TL; DR:あなたはおそらく知っているように「& &」演算子はfalseと評価する最初のオペランドでオペランドの評価を停止しながら、それは、AND演算を実行する前に、Javaで「&」演算子は、両方のオペランドを評価します。
私は個人的にこの区別を混乱と無意味の両方を見つける。 fn
がヌルの値で呼び出さないでくださいという意味
if (a != null && fn (a)) { ... }
:「& &」演算子を使用すると、のようなものを行うことができます。私が誤って次のように書いているとします。
if (a != null & fn (a)) { ... }
すべてのテストは完全に無意味です。このようなタイプミスが起こり得ないようにしたい。リンタールールはこれを実行するのに最適な方法です。
リンター規則では、オペランドの種類を区別する必要があります。 &
に数字を使用すると、その意味はビット単位でとの演算子です。私はもちろんこれを禁止したくはありませんが、それは非常に便利です。さらに、OR演算子|
と||
も同じように動作し、数値演算のために許可しながらブール値を|
にする必要がありません。だから、基本的には:
int a = (3 & 4); // OK
boolean b = (true && false); // OK
boolean c = (true & false); // linter error, hopefully
int d = (5 | 7); // OK
boolean e = (true || false); // OK
boolean f = (true | false); // linter error, hopefully
「&」は適切な状況で便利であり、無意味でないか無駄ではありません。 – AntonH
それはすべての個人的な味だと思います。 C++やJavaScriptから来て、私は&&に慣れていて、もう片方の必要はありません。 –
@digorydoo \t時にはビットを操作したいのですが? –