Find Invalid Lamda expression
- () -> {}
- () -> “Raoul”
- () -> {return “Mario”;}
- (Integer i) -> return “Alan” + i;
- (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이 될 수 없다.
포스트 메타 정보
퍼블리싱 및 추천
- 내보내기
- 밸리 : IT 2017/02/06 23:44
- 태그 : java8, lamaexpression, expresssion과statement차이
덧글