728x90

Lambda 7

(코틀린) 고차 함수

고차 함수(high order fuction)란 함수를 매개변수로 전달받거나 반환하는 함수를 의미합니다. 일반적으로 함수의 매개변수나 반환값은 데이터입니다. 그런데 데이터가 아닌 함수를 매개변수나 반환값으로 이용하는 함수를 고차 함수라 합니다. 이처럼 함수를 매개변수나 반환값으로 이용할 수 있는 것은 앞에서 살펴보았듯이 함수를 변수에 대입할 수 있기 떄문입니다. 다음 코드에서 hofFun()은 고차 함수입니다. 매개변수를 하나 선언했지만 타입이 함수입니다. 따라서 이 함수를 호출하려면 인자로 함수를 전달해야 합니다. 또한, 반환 타입 역시 함수이므로 호출 결과로 함수를 반환받습니다. fun hofFun(arg: (Int) -> Boolean): () -> String { val result = if(ar..

(코틀린) 람다 함수의 반환

람다 함수도 함수이므로 자신을 호출한 곳에 결괏값을 반환해야 할 때가 있다. 람다 함수에서는 return 문을 사용할 수 없다. val some = {no1: Int, no2, Int -> return no1 * no 2} //오류 대신 람다 함수의 반환값은 본문에서 마지막 줄의 실행 결과이다. fun main() { val some= {no1: Int, no2: Int -> println("in lambda function") no1 * no2 } println("result : ${some(10, 20)}") }

(코틀린) 매개변수가 1개인 람다 함수

fun main() { val some = {no: Int -> println(no)} some(10) } 일반적으로 매개변수가 1개인 람다 함수는 위와 같이 작성한다. Int 타입의 매개변수가 1개인 람다 함수를 선언하고 이를 호출한 코드이다. fun main() { val some: (Int) -> Unit = {println(it)} some(10) } 위 코드를 보면 람다 함수의 중괄호가 안에 화살표가 없으므로 매개변수가 없는 것처럼 보입니다. 하지만 람다 함수 앞에 (Int) -> Unit이 매개변수가 1개인 람다 함수임을 알려 줍니다. 이처럼 람다 함수의 매개변수가 1개일 때는 중괄호 안에서 매개변수 선언을 생략하고 println(it)처럼 it 키워드로 매개변수를 이용할 수 있습니다. 출처 ..

람다식 중간연산 정리 (map, filter, reduce, collect)

stream 인터페이스를 사용하여 람다식을 기존 JAVA코드(명령형 스타일)와 비교 아래에 소개하는 4개의 메서드를 간단히 설명하면 map()은 엘리먼트 변경, filter()는 엘리먼트 선택, reduce(), collect()는 엘리먼트를 하나로 리턴 이다. 1. map() map 메서드는 입력 컬렉션을 출력 컬렉션으로 매핑하거나 변경할때 유용하다. 예제 코드 list의 엘리먼트 값을 모두 대문자로 변경하여 출력. final List names = Arrays.asList("Sehoon", "Songwoo", "Chan", "Youngsuk", "Dajung"); //java 7 System.out.println("java 7"); for(String name : names) { System.out...

JAVA 2022.10.19

map() 과 flatMap() 의 차이

.map() .map()은 단일 스트림의 원소를 매핑시킨 후 매핑시킨 값을 다시 스트림으로 반환하는 중간 연산을 담당한다. 필터가 조건을 충족시키는 새로운 스트림을 생선한다면, Map은 각각의 아이템을 변경하여 새로운 컨텐츠를 생성하는 기능이다. List list = Arrays.asList( new Person(20,"kim"), new Person(21,"moon"), new Person(22,"sub"), new Person(23,"park") ); list.stream().map(Person::getName) .forEach(System.out::println); kim moon sub park .flatMap() flatMap() 은 여러개의 스트림을 한개의 스트림으로 합쳐준다. 복잡한 스트림을..

JAVA 2022.09.22

AWS SQS의 Lambda를 호출 예제

대략적인 SQS가 Lambda를 호출하는 구성도 이를 바탕으로 SQS에서 메시지를 읽어들이는 코드(Node.js 기반)를 작성 QueueUrl은 이전에 생성한 SQS의 url을 넣어줌 AWS의 Console에서 결과를 확인 const AWS = require("aws-sdk"); const sqs = new AWS.SQS(); const lambda = new AWS.Lambda(); exports.handler = (event, context, callback) => { const params = { QueueUrl: 'https://sqs.ap-northeast-2.amazonaws.com/XXXXXX/MyFirstQueue', MaxNumberOfMessages: 10, MessageAttribut..

AWS 2022.02.15

람다 함수(with 메서드 참조)

람다식이 하나의 메서드만 호출하는 경우에는 메서드 참조(method reference)라는 방법으로 람다식을 간략히 할 수 있다. //예1) static 메서드 참조 (기존) Function f = (String s) -> Integer.parseInt(s); //람다식 (변경) Function f2 = Integer::parseInt; //메서드 참조 //예2) 인스턴스 메서드 참조 (기존) BiFunction f = (s1, s2) -> s1.equals(s2); //람다식 (변경) BiFunction f2 = String::equals; //메서드 참조 //예3) 특정 객체 인스턴스 메서드 참조 MyClass obj = new MyClass(); (기존)Function f = (x) -> obj.e..

JAVA 2022.02.14
728x90