(자바8 - 함수형 프로그래밍 기법)
함수를 마치 일반값처럼 사용해서 인수로 전달하거나, 결과로 반환받거나, 자료구조에 저장할 수 있음을 의미한다. 일반 값처럼 취급할 수 있는 함수를 일급 함수 라고 한다. 바로 자바8이 이전버전과 구별되는 특징 중 하나가 일급 함수를 지원한다는 점이다. 자바8에서는 ::연산자로 메서드 레퍼런스를 만들거나 (int x) -> x + 1 같은 람다표현식으로 직접 함숫값을 표현해서 메소드를 함숫값으로 사용할 수 있다. 자바8에서는 다음과 같은 메서드 레퍼런스로 Integer.parsetInt를 저장 할 수 있다. Function<String, Integer> strToInt = Integer.parseInt 1. 고차원 함수 2. 커링 대부분 애플리케이션은 국제화를 지원해야 하는데 이때 단위 변환 문제가 발생할 수 있다. 보통 변환요소와 기준치 조정요소가 단위 변환 결과를 좌우한다. 다음은 섭씨를 화씨로 변환하는 공식이다. CtoF(x) = x*9/5 + 32 다음과 같은 패턴으로 단위를 표현할 수 있다. 1. 변환요소를 곱함 2. 기준치 조정요소를 적용 static double converter(double x, double y, double f) { return x * f + b; } 위와같이 하면 인수에 변환요소와 기준치를 넣는 일은 귀찮은 일이며 오타도 발생하기 쉽다. 다음은 커링이라는 개념을 활용해서 한 개의 인수를 갖는 변환 함수를 생산하는 '팩토리' 를 정의하는 코드이다. static DoubleUnaryOperator curreidConverter(double f, double b) { return (Double x) -> x * f +b; } 위 메소드에 변환요소(f)와 기준치 (b) 만 넘겨주면 우리가 원하는 작업을 수행할 함수가 반환된다. 예를들어, 다음은 팩토리를 이용해서 원하는 변환기를 생성하는 코드다. DoubleUnaryOpe...