스칼라와 자바의 람다식 표현 중 주요 차이점을 설명한다.
스칼라는 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