2016-09-01 6 views
-4

pythonのOperatorパッケージと同等のものを探しています。これにより、新しいラムダ関数を作成することなく、演算子を減らす(例えば)ように関数を使用できるようになります。Javaの演算子の機能バージョン?

+0

'Integer :: sum'がありますが、残りはあらかじめパッケージ化されているとは思いません。 – shmosel

+0

javaはPythonから遠く離れています...達成したいものとこれまで試みてきたものを投稿すると良いでしょう。 –

+0

Stream.reduce((x、y) - > x || y)をStream.reduce(Operators :: or)で置き換えます。できるだけクリーナーになり、新しいラムダを定義しないようにします。 –

答えて

0

Scalaを試してみたい場合は、JavaコードをScalaアプリケーションに取り入れることができます。

// Simulate a small stream 
val stream = true #:: false #:: true #:: Stream.empty 

// With lambda 
val result1 = stream.reduce(_ || _) 
println("Result 1 = " + result1) 

// Define function 
val OpOR = (x: Boolean, y: Boolean) => {x || y} 

// Pass function as argument to perform OR operation 
val result2 = stream.reduce(OpOR) 
println("Result 2 = " + result2) 

どちらの場合も、それぞれの結果の出力はtrue次のようになります。あなたが要求したように、あなたは何かを行うことができます。

参照:

http://alvinalexander.com/scala/how-to-walk-scala-collections-reduceleft-foldright-cookbook

http://alvinalexander.com/scala/how-to-use-stream-class-lazy-list-scala-cookbook

0

ここでは、コメントからの情報を使用して、Javaの8である:

import java.util.Optional; 
import java.util.stream.*; 
import static java.lang.Boolean.FALSE; 
import static java.lang.Boolean.TRUE; 

public class Main { 
    void reduceDemo() { 
     Stream<Boolean> booleanStream = Stream.of(TRUE, FALSE, TRUE); 

     Optional<Boolean> reduced = booleanStream.reduce(Boolean::logicalOr); 

     System.out.println("reduced: " + reduced.get()); 
    } 

    public static void main(String[] args) { 
     Main m = new Main(); 
     m.reduceDemo(); 
    } 
} 

出力:

reduced: true