티스토리 뷰
자바8 에서 함수형 언어의 장점을 채용 하면서 함수형 언어에서 주로 사용되는
Currying(위키피디아) 기법을 사용할수 있게 되었습니다.
Currying 은 쉽게 말하면 N개 이상의 인자를 받는 함수를 조합(chaining) 해서
재사용성을 높여주는 기법 입니다.
이하 아주 간단(유치한?)한 예제로 자바8 에서 currying 을 사용하는 코드 입니다.
(아래 코드에 이해를 돕기 위해서는 자바8 에 람다식에 대한 이해가 필요 합니다.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | package function; import java.util.function.BiFunction; import java.util.function.Function; public class CurryJava { public static void main(String[] args) { Function<String, BiFunction<String, String, Function<String, String>>> fn = text -> (prefix, sufix) -> tail -> prefix + text + sufix + tail; //사자를 만들자 BiFunction<String, String, Function<String, String>> 사자 = fn.apply("Lion"); //별사자 Function<String, String> 별사자 = 사자.apply("★ ", " ★"); //원사자 Function<String, String> 원사자 = 사자.apply("● ", " ●"); //별사자에는 별꼬리를 달자 String 별꼬리달린사자 = 별사자.apply(" ☆☆☆☆☆☆"); //원사자에는 원꼬리를 달자 String 원형꼬리달린사자 = 원사자.apply(" ○○○○○○○○"); System.out.println(별꼬리달린사자); System.out.println(원형꼬리달린사자); //그런데 별사자한테 원꼬리를 달아주면 어떨까? String 품종개량사자 = 별사자.apply(" ○○○○○○○○"); System.out.println(품종개량사자); /* OUTPUT: ★ Lion ★ ☆☆☆☆☆☆ ● Lion ● ○○○○○○○○ ★ Lion ★ ○○○○○○○○ */ } } | cs |
'Java' 카테고리의 다른 글
[자바] 자바에서 Call By Value 인가? Call By Reference? (0) | 2018.01.23 |
---|---|
[자바] 자바8 에서 하위디렉토리 전부 삭제하기 (0) | 2018.01.17 |
[자바] 자바에서 유니크ID, Key 값 만들기 (0) | 2018.01.16 |
[자바] Java8 에서 람다(Lamda)식 사용하기 1편 (0) | 2018.01.15 |
[자바] 자바에서 강제로 Out of memory 발생시키기 (0) | 2013.07.29 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크