lambda: 7개의 글
[Spring Boot] ApplicationRunner 등록 방법 정리 1. 별도의 클래스에 @Component 붙여서 등록하기 import org.springframework.boot.ApplicationArguments; import org.springframework.stereotype.Component; @Component public class ApplicationRunner implements org.springframework.boot.ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { // 코드 작성 } } 2. @Configuration 클래스에 @Bean으로 직접 등록하기 ..
[Spring] Component Scan과 Function을 사용한 빈 등록 방법 1. @ComponentScan @ComponentScan 애노테이션은 spring 3.1부터 도입됐으며 설정된 시작 지점부터 컴포넌트 클래스를 scanning하여 빈으로 등록해주는 역할을 한다. 컴포넌트 클래스는 다음 애노테이션이 붙은 클래스를 의미한다. @Component @Repository @Service @Controller @Configuration @ComponentScan의 가장 중요한 두 가지 속성은 component를 scan할 시작 지점을 설정하는 속성과 scan한 component 중 빈으로 등록하지 않을 클래스를 제외하는 필터 속성이다. 1) Scan 시작 지점 설정 - basePackages()와..
C++11부터 지원하는 람다식은 익명 함수를 정의하는 식입니다. 익명 함수는 람다라고 불립니다. 익명 함수, 즉 람다는 함수의 몸체는 있지만 이름이 없습니다. (어떤 책을 읽어보면 람다식은 "변수에 저장할 수 있는 로직이다"라고 정의합니다.) 람다식은 함수 포인터와 함수 객체에 비해 다음과 같은 장점이 있습니다. 1. 코드 상으로 별도의 클래스를 구현하지 않아도 된다. 2. 변수의 상태 유지가 가능하다. 다음은 람다 함수의 예시입니다. sort(x, x+n, [](float a, float b){ return (abs(a) > abs(b)); }); STL의 predicate 부분에 람다 함수를 작성함으로써 sort 함수가 어떤 기준으로 정렬할 것인 지를 명시했습니다. 아래는 MSDN에 있는 람다식 구문..
| 람다(lambda)란? 람다(lambda)는 익명함수를 지칭하는 용어입니다. 그렇다면 익명 함수란 무엇일까요? 함수지만 기존의 함수 선언 문법과 달리 함수를 명명하지 않고도 정의할 수 있는 함수입니다. 기존의 프로그래밍 패러다임에서는 함수에 꼭 이름을 명시해야 했습니다. 다음과 같이요. def example_plus(a, b): return a + b print(example_plus(4,2)) 6 파이썬에서는 위 함수의 이름을 명시하지 않고도 다음과 같이 이름 없는 함수를 만들 수 있습니다. lambda a, b : a + b 위의 식을 이용해 def 키워드를 쓰지 않아도 lambda로 만든 함수를 변수에 할당해 사용할 수 있습니다. 이것은 파이썬에서의 함수가 일급함수이기 때문에 가능한 것입니다. ..
lambda는 익명 함수로 함수를 간단하게 정의하는 데 쓰입니다. C++에서의 labmda 함수는 상당히 복잡한 구문을 가졌는 데 반해 Python에서는 다음과 같은 형식으로 작성하면 됩니다. lambda 인자 : 표현식 C++에 (http://engkimbs.tistory.com/62) 비교하면 너무나도 간단한 식이죠! 이게 바로 Python의 매력이 아닌가 싶습니다. 이러한 차이는 C++과 Python이 지향하는 바가 달라서 그렇습니다만 일단 'Python이 정말 간단하구나!'라고 생각하고 넘어가죠. 아래의 예는 람다 함수의 예제입니다. print( (lambda x,y: x+y)(10,20) ) 결과 30 map과 함께 써서 원하는 값들이 들어 있는 리스트를 뽑아내는 데도 사용됩니다. 여기서 map..
해당 내용은 이펙티브 자바 3판 (조슈아 블로크 지음, 이복연 옮김)를 읽고 나같은 초심자의 눈으로 이해한 내용을 정리해보았다. 책에 있는 내용을 기반으로 썼지만 책에 없는 내용도 조금 적었다. (익명클래스와 람다 비교, 성능적 관점, 함수형 인터페이스와 default메소드, 코드블록-람다블록 비교, Collectors API의 구체적 설명 등) 7장의 아이템 목록 익명 클래스보다는 람다를 사용하라 람다보다는 메소드 참조를 사용하라 표준 함수형 인터페이스를 사용하라 스트림은 주의해서 사용하라 스트림에서는 부작용없는 함수를 사용하라 반환 타입으로는 스트림보다 컬렉션이 낫다 스트림 병렬화는 주의해서 적용하라 아이템42. 익명 클래스보다는 람다를 사용하라 람다는 이름이 없고 문서화도 못한다. 따라서 코드 자체..
참조문서 https://docs.oracle.com/javase/8/docs/api/java/util/function/package-frame.html https://skyoo2003.github.io/post/2016/11/09/java8-lambda-expression https://homoefficio.github.io/2017/02/19/Java8-%EB%9E%8C%EB%8B%A4-%EA%B4%80%EB%A0%A8-%EC%8A%A4%ED%8E%99-%EC%A0%95%EB%A6%AC/ 1. 람다란? 람다란 코드블록이다. 기존에는 코드블록은 반드시 메서드 내에 존재해야 했다. 코드블록을 가지려면 메소드, 클래스를 선언해야 했다. 하지만 자바8부터는 람다를 통해 코드블록만 가질 수 있도록 한 것이다. ..