adSense 900*70


Correct Lamda expressions JAVA - Basic

Find Invalid Lamda expression

  1. () -> {}
  2. () -> “Raoul”
  3. () -> {return “Mario”;}
  4. (Integer i) -> return “Alan” + i;
  5. (String s) -> {“Iron Man”;}

Answer

4 and 5, they are invalid

Why

Structure of Lamda expression

Lamda expression은 세 부분으로 구성이된다. 첫번째는 아래와 같이 parameter부분이다.
(Type p1, Type p2)
어떤 경우는 Type 부분을 생략할 수 있다. 그 이유는 컴파일러가 타입 추론을 통해 충분히 인자의 타입을 알아 낼 수 있기때문이다.

두번째는 화살표 ->인데 x -> f(x)와 같이 함수에서의 인자를 함수에 전달한다는 의미로 해석하면 될 것 같다.

마지막은 Lamda의 본체(body)부분이다. 이 부분에는 expression 혹은 statement가 올 수 있다.

요약하면 아래와 같은 형태로 Lamda를 작성할 수 있다.


  • (parameters) -> expression
  • (parameters) -> {statements;}

따라서, 위 원칙에 따라 하나씩 살펴보면 1,2,3번은 모두 잘 작성된 Lamda expression들이고, 4번과 5번은 아래와 같이 수정해줘야 정상적인 Lamda expression가 된다.


  • (Integer i) -> {return "Alan" + i;}
  • (String s) -> "Iron Man"

Appendix

Expression와 statement의 차이

Expression의 예, "test"
statement의 예, { return "test";}
위의 두 예에서 볼 수 있듯이, expression은 액션을 취하기보다는 그 자체로 값을 표현하기 위한 것이다. 그리고 expression은 연산자(operators)를 통해 수평적으로 결합이 될 수 있다.
반면 statement는 어떤 액션을 취하기 위한 코드 라인(들)이다. statement는 수직적으로 결합이 된다.

expression은 statement가 될 수 있지만, statement는 expression이 될 수 없다.


덧글

댓글 입력 영역


side adsense

adSense 900*70