반응형
- Java Functional하게 사용하기 - 52022-02-17 00:38:53함수형 프로그래밍을 공부하면서 scope에 대한 내용을 언급하는데 보통 scope는 변수에 접근할 수 있는 범위로 생각을 하죠 lexical scope는 뭘까요 그럼? 이는 함수 안에 함수가 있을 때 내부 함수에서 외부 함수에 있는 변수에 접근이 가능한 범위를 lexical scope라고 합니다. 위에서 처럼 내부함수에서 외부함수의 변수를 사용해서 "Hello World"라는 문자열을 만들어서 반환했는데 이렇게 내부 함수가 사용한 외부 함수의 변수들은 계속 존재하게 되고 이렇게 lexical scope를 포함하는 함수를 closure라고 한다. 이때 내부 함수가 사용한 외부 함수의 변수들은 내부 함수 선언 시점에서 변할 수 없어서 final로 만들지 않아도 암묵적인 final이 된다. 이런 closure..
- Java Functional하게 사용하기 - 42022-02-17 00:13:19Stream의 종결 처리 중간처리를 통과한 Stream 데이터들을 종결 처리로 합을 구하거나 , 최대 최소 값을 구하건, 리스트로 다시 모으는 등의 종결 작업을 할 수 있는데 이번에는 Stream의 종결 처리에 대해 알아 보겠습니다. 우선 최대, 최소, 개수를 얻을 수 있는 종결 처리 메서드를 보면 이렇게 Comparator를 람다식으로 파라미터로 전달해 Optional 반환값을 받을 수 있습니다. min 또한 마찬가지이고 count를 보자면 이런식으로 filter를 통과한 Stream 데이터들의 개수를 반환하는 것을 볼 수 있습니다. 다음은 allMatch, anyMatch를 보겠습니다. allMatch는 Stream 안의 모든 데이터가 predicate을 만돈해야 true를 반환하고 anyMatch는..
- Java Functional하게 사용하기 - 32022-02-12 22:04:01Optional을 사용해봅시다. null인지 아닌지 , null이 될 수 있는지 그럴 수 없는지, empty인지 아닌지 등을 편리하게 나타낼 수 있는 클래스죠 Optional.of를 사용해 Null이 아닌 오브젝트릴 이용해서 Optional을 만들고 Empty를 사용해서 빈 Optional을 만들고 ofNullable을 사용해서 Null인지 아닌지 모르는 오브젝트로 Optional을 만들 수 있는데 이렇게 만든 Optional을 가지고 이런식으로 Optional의 안에 있는 값을 확인하고 꺼내는 다양한 메서드를 사용할 수 있는데 isPresent()로 값의 존재 여부를 확인, get()으로 값을 꺼내고, orElse로 null인 경우 supplier로 공급되는 값을 리턴시키고, orElseThrow로 n..
- Java Functional하게 사용하기 - 22022-02-07 22:08:23Stream Colletion 형태로 구성된 데이터를 람다를 이용해 간결하고 직관적으로 프로세스하게 해준다. Stream을 사용해 기존의 반복문을 간결한 형태로 표현 가능하고 병렬 처리를 쉽게 할 수 있다. Stream이을 사용해 Data를 흐름의 형태로 처리한다고 생각했을 때 이 흐름을 처음, 중간, 끝으로 볼 수 있는데 각각 source를 stream으로 흐르게 하는 처음 filter, map 등의 intermediate operations (중간 처리) collect, reduce 등의 terminal operation (종결 처리) 으로 볼 수 있다. 우선 중간 처리에서 자주 사용하는 filter와 map을 보자면 filter는 predicate이 true를 반환하는 데이터만 존재하는 stream..
반응형