ブール値入力パラメータのリストのためにブール値を実装するためにLabda式を試してみました。ブール型リストのJavaラムダ式のXOR
OR:expressions.stream().anyMatch(e -> e.evaluate(input));
AND:expressions.stream().allMatch(e -> e.evaluate(input));
e.evaluate(input)
戻り真または偽 "または" と "と" 私が書いた次たstatmentsについては 。 しかし、onceMatchメソッドがすべて実装されていないので、私はXORに固執しています。
return expressions.stream().filter(e -> e.evaluate(input) == true).collect(Collectors.counting()) == 1;
しかし、私は1つのラムダ式でそれを見たい:
最初のアイデアは、すべての真の値をフィルタリングし、それがちょうど1であるかどうかを確認することです。
最初の式がXORでない理由と、2番目の式がどういう理由を説明できますか?マップがブール値のストリームを作成することを理解しています。 [真実、偽、虚偽、真実]しかし、それ以来私は立ち往生しています。特に "a^b"部分。それはbitvise xorではない? – froehli
など。 'true^true^true == true'という文字列があります。そこから、あなたが望むのであれば、例えば 'true'を' true^false'に置き換えるだけで無限の数の例を導き出すことができます。最初の 'true'を置き換えると、' true^false^true^true'も得られます。 XORは単に「真の値」ということを意味しません。 – Holger
「bitwise xor」と「logical xor」には違いはありません。 'false'に' 0'、 'true'に' 1'を設定すると、結果はまったく同じになります... – Holger