2017-11-12 11 views
-4

を使用して、これらには、JavaScriptのとおりです。のJavaラムダ式

function toCelsius(fahrenheit) { 
    return (5/9) * (fahrenheit-32); 
} 
function area(radius) 
    { 
     return Math.PI * radius * radius; 
    }; 
私はラムダ式を使用してJavaで同じことを行うことができますどのように

?これまでのところ、私が理解このようなものです:

(int fahrenheit) -> (5/9) * (fahrenheit-32); 

しかし、それはエラー(不正スタートタイプ)、私はそれが正しいではありません推測を示しています。 UnaryOperator<Double>を使用して

+2

ステップ1::オープンIDE

DoubleUnaryOperator toCelsius = f -> 5 * (f - 32)/9; DoubleUnaryOperator findArea = r -> r * r * Math.PI; 

結果を取得します。ステップ2:コードを書く。ステップ3:利益! (より良い回答が必要な場合は、[SO Question Checklist](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)を読んで[編集]をクリックしてください)。 –

答えて

0

と同じであるザ・最初の型のパラメータは関数の入力の型であり、2番目の型の型は関数の戻り値の型です。あなたがそれらを使用したいときは、

Function<Double,Double> toCelsius = fahrenheit -> 5 * (fahrenheit - 32)/9; 
Function<Double,Double> findArea = radius -> radius * radius * Math.PI; 

としてあなたの関数を書くことができ

次に、あなたが注意点として

double freezing = toCelsius.apply(32); 
double pizzaSize = findArea.apply(11); 

のようなものを書くことができ、Javaで5/9を書いていません - これはタイプintの式で、その値は0です。

0

lambdaあなたはこのように行うことができます。

UnaryOperator<Double> toCelsius = f -> (5/9.0) * (f - 32); 
UnaryOperator<Double> area = r -> Math.PI * r * r; 

System.out.println(toCelsius.apply(50.0)); // 10.0 
System.out.println(area.apply(10.0));  // 314.159265... 

UnaryOperator<Double>は、Javaを使用して、これらを保存するために、ここで使用できる汎用的なインタフェースFunction<T,R>を持って​​

0

私は手でタスクを実行するDoubleUnaryOperator機能インターフェイスを使用しても計算を行う際に、それらの対応するラッパー型、またはその逆へないボクシングプリミティブ型の利点を有するだろう。

例:

double celcius = toCelsius.applyAsDouble(40); 
double area = findArea.applyAsDouble(24);