3-1기 스터디/Kotlin15 [10주차] 람다로 프로그래밍(4) Ch05 람다로 프로그래밍 📌 학습목표 • 람다 식과 멤버 참조 • 함수형 스타일로 컬렉션 다루기 • 시퀀스: 지연 컬렉션 연산 • 자바 함수형 인터페이스를 코틀린에서 사용 • 수신 객체 지정 람다 사용 람다 식(lambda expression) 또는 람다는 다른 함수에 넘길 수 있는 작은 코드 조각을 뜻한다. 람다를 사용하면 공통 코드 구조를 라이브러리 함수로 뽑아낼 수 있다. 5.1 람다 식과 멤버 참조 5.1.1 람다 소개: 코드 블록을 함수 인자로 넘기기 함수형 프로그래밍에서는 함수를 값처럼 다룬다. 또한, 클래스를 선언하고 그 클래스의 인스턴스를 함수에 넘기는 것이 아니라 함수 자체를 다른 함수에 전달한다. → 이때, 람다 식을 사용하면 함수를 선언할 필요가 없고 코드 블록을 직접 함수의 인자로.. 2022. 1. 16. [9주차] 람다로 프로그래밍(3) 5.0 람다식 람다식 (람다) : 다른 함수에 넘길 수 있는 작은 코드 조각 람다의 특징 쉽게 공통 코드 구조를 라이브러리 함수로 뽑아낼 수 있음 코틀린 표준 라이브러리에서 많이 사용함 컬렉션 처리 대치 수신 객체 지정 람다 : 람다 선언을 둘러싸고 있는 환경과는 다른 상황에서 람다 본문을 실행할 수 있음 5.1 람다 식과 멤버 참조 5.1.1 람다 소개 : 코드 블록을 함수 인자로 넘기기 일련의 동작을 변수에 저장하거나 다른 함수에 넘겨야하는 경우 자바에서는 무명 내부 클래스 이용 ⇒ 단점 : 번거로움 ⇒ 예제) 무명 내부 클래스로 리스너 구현하기 /*자바*/ button.setOnClickListener(new onClickListener(){ @Override public void onClic(Vi.. 2022. 1. 9. [8주차] 람다로 프로그래밍(2) 컬렉션 함수형 API 필수적인 함수: filter와 map filter 함수는 컬렉션에서 원치 않는 원소를 제거한다. 하지만 filter는 원소를 변환할 수는 없다. 원소를 변환하려면 map 함수를 사용해야 한다. map 함수는 주어진 람다를 컬렉션의 각 원소에 적용한 결과를 모아서 새 컬렉션을 만든다. data class Person(val name: String, val age: Int) fun main(args: Array) { val list = listOf(1, 2, 3, 4) println(list.filter { it % 2 == 0 }) val people = listOf(Person("Alice", 29), Person("Bob", 31)) println(people.filter { it.. 2022. 1. 3. [7주차] 람다로 프로그래밍(1) 람다 식과 멤버 참조 람다 소개 람다 식은 기본적으로 다른 함수에 넘길 수 있는 작은 코드 조각을 뜻한다. 코틀린 표준 라이브러리는 람다를 많이 사용한다. (ex) 컬렉션 처리) “이벤트가 발생하면 이 핸들러를 실행하자” / “데이터 구조의 모든 원소에 이 연산을 적용하자”와 같은 생각을 코드로 표현하기 위해 일련의 동작을 변수에 저장하거나 다른 함수에 넘겨야 하는 경우가 자주 있다. 이전에 자바에서는 무명 내부 클래스가 있었는데, 이는 코드를 함수에 넘기거나 변수에 저장할 수 있기는 하지만 상당히 번거롭다. 함수형 프로그래밍에서는 함수를 값처럼 다루는 접근 방법을 택함으로써 이 문제를 해결한다. 무명 내부 클래스로 리스너 구현하기 button.setOnClickListener(new onClickLis.. 2021. 12. 26. [5주차] 클래스, 객체, 인터페이스(2) 4-3. 데이터 클래스와 클래스 위임 1. 모든 클래스가 정의해야 하는 메소드 - 자바와 마찬가지로 코틀린 클래스도 toString, equals, hashCode 등을 오버라이드 할 수 있다. 하지만 이 경우, hashCode 정의를 빠뜨리면 해당 메소드를 오버라이드한 클래스가 제대로 동작하지 않는 경우가 있다. why? JVM 언어에서는 hashCode가 지켜야 하는 "equals()가 true를 반환하는 두 객체는 반드시 같은 hashCode()를 반환해야 한다" 라는 제약이 있는데, 이를 어기면 제대로 된 결과값을 얻을 수 없다. HashSet을 이용할 경우 이는 먼저 객체의 해시 코드를 비교하고 해시 코드가 같은 경우에만 실제 값을 비교한다. 따라서 원소 객체들이 해시 코드에 대한 규칙을 지키지.. 2021. 11. 28. [4주차] 클래스, 객체, 인터페이스 Ch04 클래스, 객체, 인터페이스 📌 학습목표 • 클래스와 인터페이스 • 뻔하지 않은 생성자와 프로퍼티 • 데이터 클래스 • 클래스 위임 • object 키워드 사용 4.1 클래스 계층 정의 코틀린에서 클래스 계층을 정의하는 방식을 자바와 비교해보고, 코틀린의 가시성과 접근 변경자에 대해 살펴보며, 코틀린에 새로 도입된 sealed 변경자에 대해 알아보자! 4.1.1 코틀린 인터페이스 코틀린 인터페이스는 자바 8 인터페이스와 비슷한데, 코틀린 인터페이스에는 추상 메소드뿐만 아니라 구현된 메소드도 정의할 수 있다. 단, 인터페이스에는 아무런 필드도 들어갈 수 없다. interface Clickable { fun click() } class Button : Clickable { override fun cl.. 2021. 11. 21. 이전 1 2 3 다음