자바

java 8 에 람다 표현식이 도입되면서 closure를 사용하지 않고도 함수형 언어 비슷한 코드를 작성하는게 가능해졌다. 람다 표현식은 이름이 없는 익명 함수를 의미한다.
람다 표현식에 관심을 둬야하는 몇가지 이유는 다음과 같다.

  • OOP 언어인 Java에서 함수형 코드를 작성할 수 있게 해준다.
  • 람다 표현식을 이용함으로써 간결하고 명확한 코드로 그 의도를 표현할 수 있다.
  • Collection filtering, Iteration , Extraction 등에서 놀라운 코드 생산성을 보인다.


아주 아주 기본적인 람다 표현식에 대해 익혀보자.
Syntax

?

(argument) -> (body)


0개 이상의 인자를 실행하고자 하는 함수 body 로 전달한다는 의미이며, 이는 람다 표현식의 일반적인 구문이다.
예를 들면 다음과 같이 표현된다.

?

(int a, int b) -> a*b

(Person p) -> { return p.getAge();}



다음 코드는 swing 에서 자주 보이는 이벤트 핸들러를 람다로 변경하는 코드이다.

?

btnOk.setOnAction( newEventHandler() {

 @Override

 public voidhandle(ActionEvent e) { //버튼 action에 처리할 코드를 여기에 작성

 }

});


위 코드를 람다 표현식으로 변경하면 다음과 같다.

?

btnOk.setOnAction( e -> { //버튼 action에 처리할 코드를 여기에 작성

});



표현식의 또 다른 예로 익명 클래스는 다음과 같이 작성할 수 있다.

?

new Thread(

() -> System.out.println("This is a seperate thread")

).start();



마지막으로 collection을 다루는 예제만 더 보고 끝내자.

?

ArrayList arrayList= new ArrayList<>();

for(int i=1; i<=100; i++)

arrayList.add(i);

 

//일반적인 for-loop 문

for(Integer i: arrayList)

{ System.out.println(i);

}

 

//lambda식으로 표현한 for-loop문

arrayList.forEach( i -> {System.out.println(i);});



이상으로 람다 표현식이 어떻게 코드 수를 줄이고 Java와 함수형 언어 사이의 갭을 매워주는지에 대해 간략히 알아보았다.

 

이 글의 관련글

 

about author

PHRASE

Level 60  머나먼나라

말은 수레를 끈다. 소도 수레를 끌 수 있다. 그러나 말과 소를 한 수리에 매어서 끌게 해서는 안된다. -탈무드-

댓글 ( 9)

댓글 남기기

작성

자바 목록    more