목록람다 (5)
초보개발자 긍.응.성
5장 람다로 프로그래밍 💡 다루는 내용 람다 식과 멤버 참조 함수형 스타일로 컬렉션 다루기 시퀀스: 지연 컬렉션 연산 자바 함수형 인터페이스를 코틀린에서 사용 수신 객체 지정 람다 사용 5.1 람다 식과 멤버 참조 람다 소개: 코드 블록을 함수 인자로 넘기기 button.setOnClickListener { /* 클릭시 수행할 동작 */ } 람다 식의 문법 val sum = { x: Int, y: Int -> x + y } run { println(42) } 람다 식은 중괄호로 둘러싸여 있다. 식이기 때문에 변수에 저장할 수 있다. run 함수를 통해 인자로 받은 람다를 실행할 수 있다. 실행 시점에서 람다 호출에는 아무 부가 비용이 들지 않는다. data class Person(val name: Str..
이 장에서는 람다 표현식을 어떻게 만드는지, 어떻게 사용하는지, 어떻게 코드를 간결하게 만들 수 있는지 설명한다. 또한 자바 8 API에 추가된 중요한 인터페이스와 형식 추론 등의 기능을 확인한다. 람다의 특징 익명 - 보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다. 구형해야 할 코드에 대한 걱정거리가 줄어든다 함수 - 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 하지만 메서드처럼 파라미터 리스트, 바디, 반환 형식, 가능한 예외 리스트를 포함한다. 전달 - 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있다. 간결성 - 익명 클래스처럼 많은 자질구레한 코드를 구현할 필요가 없다. 람다의 구성 /* 람다 파라미터 | 화살표 | 람다 바디 */ (Apple a1,..
동작 파라미터화에는 메서드 내부적으로 다양한 동작을 수행할 수 있도록 코드를 메서드 인수로 전달한다. 이 동작 파라미터화를 이용하면 자주 바뀌는 요구사항에 효과적으로 대응할 수 있다. 동작 파라미터화 방법 코드 전달 기법을 이용하면 동작을 메서드의 인수로 전달할 수 있다. 하지만 자바 8 이전에는 코드를 지저분하게 구현해야 했다. 익명 클래스로도 어느 정도 코드를 깔끔하게 만들 수 있지만 자바 8에서는 인터페이스를 상속받아 여러 클래스를 구현해야 하는 수고를 없앨 수 있는 방법을 제공한다. 선택 조건을 결정하는 (전략) 인터페이스 선언(Predicate) public interface ApplePredicate { boolean test(Apple apple); } 클래스를 통한 동작 파라미터화 publ..
자바는 처음부터 많은 유용한 라이브러리를 포함하는 잘 설계된 객체지향 언어로 시작했다. 코드를 JVM 바이트 코드로 컴파일하는 특징 때문에 자바는 인터넷 애플릿 프로그램의 주요 언어가 되었다. JVM의 업데이트 덕에 JVM에서 실행되는 경쟁 언어는 더욱 부드럽게 실행될 수 있으며, 자바와 상호 동작할 수 있게 되었다. 또한 자바는 다양한 임베디드 컴퓨팅 분야도 장악하고 있었다. 하지만 프로그래밍 언어 생태계에 변화의 바람이 불었다. 프로그래머는 빅데이터라는 도전에 직면하면서 멀티코어 컴퓨터나 컴퓨팅 클러스터를 이용해서 빅 데이터를 효과적으로 처리할 필요성이 커졌다. 또한 병렬 프로세싱을 활용해야 하는데 이전의 자바로는 충분히 대응할 수 없었다. 그렇기에 자바는 변화하였다. 자바 8은 더 다양한 프로그래밍..
익명 클래스보다는 람다를 사용하라 익명 클래스 방식은 너무 코드가 길다. 단 하나의 추상 메서드를 갖는 함수형 인터페이스는 람다식으로 표현하자. 람다식의 경우 타입을 명시해야 코드가 더 명확할 때만 제외하고는, 람다의 모든 매개변수 타입은 생략하자. 익명 클래스는 함수형 인터페이스가 아닌 타입의 인스턴스를 만들 때만 사용하라 대신 람다는 이름이 없고 문서화도 못한다. 따라서 코드 자체로 동작이 명확히 설명되지 않거나 코드 줄 수가 많아지면 람다를 쓰지 말아야 한다. 람다보다는 메서드 참조를 사용하라 람다가 익명 클래스보다 나은 점 중에서 가장 큰 특징은 간결함이다. 하지만 더 간결한 방법은 메서드 참조이다. 미리 정의된 메서드 참조를 사용해도 되고, 람다로 작성할 코드를 메서드에 담은 다음 람다 대신 그..