스칼라와 자바의 람다식 표현 중 주요 차이점을 설명한다.
스칼라는 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
'java core' 카테고리의 다른 글
[java] Exception in thread "main" java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl cannot be cast to java.lang.Class 해결하기 (0) | 2017.04.27 |
---|---|
[java8] Collectors.partitioningBy/groupingBy 간단 예제 (0) | 2017.04.24 |
[java8] 람다 사용시 스칼라와 자바의 블럭 차이 (0) | 2017.04.21 |
java의 volatile (0) | 2017.04.17 |
하나의 인터페이스를 가진 interface에 @FunctionalInterface를 사용해 java7에서 java8 전환 (0) | 2017.04.04 |
람다를 활용한 java8의 Callable, Runnable 예제 (0) | 2017.03.27 |
댓글을 달아 주세요