스칼라와 자바의 람다식 표현 중 주요 차이점을 설명한다. 


스칼라는 block({, }) 지정이 자유로운 편이다.


scala> (1 to 3).map(i => i * 2).foreach(println)

2

4

6


scala> (1 to 3).map(i => {i * 2}).foreach(println)

2

4

6



그러나 자바의 경우는 block 지정이 자유롭지 않다.


Stream.of(1,2,3).map(i -> i * 2).forEach(System.out::println);

2

4

6



Stream.of(1,2,3).map(i -> {i * 2}).forEach(System.out::println);

// 컴파일 에러


Stream.of(1,2,3).map(i -> {i * 2;}).forEach(System.out::println);

// 컴파일 에러



코드를 다음처럼 리턴문을 추가된 상태로 변경해야 한다.


Stream.of(1,2,3).map(i -> {return i*2;}).forEach(System.out::println);

2

4

6


Posted by '김용환'
,