2017-11-12 2 views
-4

사용이 자바 스크립트입니다 :자바 람다 식

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>lambda를 사용

+2

단계 1 : 오픈 IDE. 2 단계 : 코드를 작성하십시오. 3 단계 : 이익! (더 나은 답변을 원한다면 [SO 질문 체크리스트] (http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)를 읽고 [편집]하십시오.) –

답변

0

자바는 이러한를 저장하기 위해 여기에 사용할 수있는 범용 인터페이스 Function<T,R>을 가지고 같은 Function<Double, Double>로 인 첫 번째 유형 매개 변수는 함수의 입력 유형이고 두 번째 유형 매개 변수는 함수의 반환 값 유형입니다.

당신이 그들을 사용하고자 할 때 당신은, 보조 노트로

double freezing = toCelsius.apply(32); 
double pizzaSize = findArea.apply(11); 
같은 것들을 쓸 수 자바 5/9를 작성하지 않는, 그런

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

로 기능을 쓸 수 있습니다 - 이 형식은 int이고 값은 0입니다.

0

:.

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>

0

나는 손의 작업을 수행 할 DoubleUnaryOperator 기능 인터페이스를 사용하여 계산을 수행 할 때 반대의 경우도 마찬가지 해당 래퍼 형에 하지 복싱 기본 유형의 이익이 있거나 것입니다.

예 :

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

이 결과를 취득 :

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