emka86:
私は長年のJava開発してきたし、最近私は非常にKotlinでの思わぬものを発見しました。Javaであり、めったに使われない論理演算子ある^
XOR時にはそれは便利です。例えば:、唯一の2つの数のがゼロより大きい場合、あなたはイースリー確認することができます。
&&
AND演算子およびいくつかの変数a
とb
、それはそれのようになります。
boolean valid = (a > 0 && b <= 0) || (a <= 0 && b > 0);
それはイースリーで達成することができます^
XOR:
boolean valid = a > 0 ^ b > 0;
さて、Kotlineに我々は使用しない^
ようXORが、ちょうどxor
そのようなKotlinのルックスで、同じコード:
val valid = a > 0 xor b > 0;
Kotlineでこのコードを与えるので、ここで問題が付属しています... コンパイルエラー!どうして?Javaですべての論理演算子は(あるため&,&&,|,||,^
)(関係演算子よりも低い優先順位を得ました>, >=, <, <=, ==, !=
)。Koltinで同じですが、それがないためにのように見えますxor
。だから、この道を行きます:
a > 0
ブール値を与えますboolean xor b > 0
:最初にevealuatedboolean xor b
ありませんb > 0
- そして最後に、我々は言ったコンパイルエラーを得ました:
The integer literal does not conform to the expected type Boolean
あなたはここにこの状況を確認することができます:XORはうまく機能していません
1つの余分ケース:あなたはこの1と思われる場合:a > 0 xor (b > 0)
作品...よく、ありません。別のコンパイルエラー:Type mismatch: inferred type is Boolean but Int was expected
誰も私には、このようなロジックのためのいくつかのpurpouseがあるか、それはKotlin言語でちょうどバグです説明できますか?