4. • 함수 정의, 함수 적용, 귀납적 함수를 추상화한 형식 체계
> 이와 같은 함수를
LAMBDA(ƛ) 표현식
링크 : closure와 currying
5. • 함수 정의, 함수 적용, 귀납적 함수를 추상화한 형식 체계
> 이와 같은 함수를
> 이렇게 축약할 수 있습니다. ( lambda 표현식 )
LAMBDA(ƛ) 표현식
링크 : closure와 currying
6. • 함수 정의, 함수 적용, 귀납적 함수를 추상화한 형식 체계
> 이와 같은 함수를
> 이렇게 축약할 수 있습니다. ( lambda 표현식 )
> 또한, 이렇게도 가능합니다. ( currying 방식)
• 프로그래밍에서 -> 익명 메소드
LAMBDA(ƛ) 표현식
링크 : closure와 currying
7. LAMBDA(ƛ) 표현식 - 문법
• 기본문법
> ( 매개변수 ) -> { 실행시킬 구문 }
• 대상 메소드를 자동으로 찾고, 람다식
만 적용
11. • 장점
> 코드의 수 감소
> 메소드로 행동방식을 전달
> 추상화로 개발자의 의도를 명확하게 하도록 도움
• 단점
> 람다식을 실행할때에는 인터페이스에 선언된 메소드를 호출하여야 한다.
> 재귀 람다식의 호출이 까다롭다.
> 클로저가 지원되지 않는다.
LAMBDA(ƛ) 표현식 - 장/단점
12. • 함수형 인터페이스 (Functional Interface)
> 개념 소개
> @FunctionalInterface 적용 유무
> 추상 메소드가 여러개일때
> default 메소드
13. 함수형 인터페이스
• 추상메소드가 1개 뿐인 인터페이
스를 함수형 인터페이스라 합니
다.
• @FunctionalInterface
> 함수형 인터페이스임을 명시
> 추상메소드가 두개 이상이라
면 컴파일 오류를 발생
> 없어도 함수형 인터페이스로
서 사용 가능( => 기존 인터
페이스도 람다식 사용 가능 )
16. 함수형 인터페이스 - 예외 메소드
• 구현이 되어있는 default, static
메소드는 추가로 더 있어도 무방
• default 메소드
> JAVA 8 이 되면서 생긴 인터
페이스의 메소드 형태
> Default methods are defined
with the default modifier =>
default 메소드는 기본적으
로 사용될 형태로 정의 된다.
17. 함수형 인터페이스 - 기타
• http://docs.oracle.com/javase/8/docs/api/java/util/function/package-
summary.html => 람다표현식을 타겟으로 한 공식제공 인터페이스
• default 메소드 탄생으로 인한 다중 상속의 모호성이 대두됨