글자의 정리함
close
프로필 배경
프로필 로고

글자의 정리함

    • 분류 전체보기 (26)
      • Study (7)
      • Error (2)
      • Project (2)
      • Kotlin in Action (15)
      • Experience (0)
  • mode_edit_outline글작성
  • settings환경설정
  • Home
  • GitHub
  • Youtube
5. [5] 수신 객체 지정 람다

5. [5] 수신 객체 지정 람다

with과 apply는 편리하며 다수의 사람이 사용중이다. 코틀린 람다의 독특한 기능인 지정 람다는 수신 객체를 명시하지 않고 람다의 본문 안에서 다른 객체의 메서드를 호출한다. (1) with fun alphabet(): String { val result = StringBuilder() for(letter in 'A'..'Z') result.append(letter) result.append("\\n Now I Know The Alphabet!") return result.toString() } fun alphabet(): String { val stringBuilder = StringBuilder() return with(stringBuilder) { // 메서드를 호출하려는 수신 객체 지정 for..

  • format_list_bulleted Kotlin in Action
  • · 2024. 2. 25.
  • textsms
5. [4] 자바 함수형 인터페이스 활용

5. [4] 자바 함수형 인터페이스 활용

Kotlin에서 사용하는 대부분의 API들은 자바로 작성되어 있다. 하지만, Kotlin의 람다를 Java API에 사용하더라도 큰 문제는 없다. 자바 8 이후로는 무명 클래스 인스턴스 대신 람다를 넘길 수 있다. (1) 자바 메서드에 람다를 인자로 전달 함수형 인터페이스를 인자로 원하는 자바 메서드에 코틀린 람다를 전달할 수 있다. 람다에 대해 무명 클래스를 만들고, 그 클래스의 인스턴스를 만들어서 메서드에 넘기는 것은 함수형 인터페이스를 받는 자바 메서드를 코틀린에서 호출할 떄 쓰는 방식을 설명해주지만, 컬렉션을 확장한 메서드에 람다를 넘기는 경우에는 사용하지 않는다. inline으로 표시된 코틀린 함수를 람다에게 넘기면 아무 무명 클래스도 만들어지지 않는다. (2) SAM 생성자: 람다를 함수형 인..

  • format_list_bulleted Kotlin in Action
  • · 2024. 2. 25.
  • textsms
5. [3] 지연 계산(lazy) 컬렉션 연산

5. [3] 지연 계산(lazy) 컬렉션 연산

people.asSequence() // 원본 컬렉션을 시퀀스로 변환 .map(Person::name) .filter { it.startsWith("A") } // 시퀀스도 컬렉션과 동일한 API 제공 .toList() // 결과 시퀀스를 다시 리스트로 변환 map이나 filter같은 컬렉션 함수들은 결과 컬렉션을 즉시 생성한다. 이는 컬렉션 함수를 연쇄하면 매 단계 마다 계산 중간 결과를 새로운 컬렉션에 담는다는 의미이다. 연산을 효율적으로 사용하기 위해선 각 연산이 컬렉션을 직접 사용하는 대신 시퀀스를 사용하게 만들어야 한다. [Sequence] 해당 시퀀스를 사용 시 중간 임시 컬렉션을 사용하지 않고 컬렉션 연산을 연쇄하는 것이 가능하다. Kotlin의 지연 계산 시퀀스는 Sequence 인터페이스..

  • format_list_bulleted Kotlin in Action
  • · 2024. 2. 25.
  • textsms
5. [2] Collection 함수형 API

5. [2] Collection 함수형 API

(1) filter와 map val list= listOf(1, 2, 3, 4) println(list.filter { it % 2 == 0 }) // [2, 4] val people = listOf(Person("Alice", 29), Person("Bob", 31)) println(people.filter { it.age > 30 }) // [Person(name=Bob, age=31)] [filter] 컬렉션을 이터레이션하면서 주어진 람다에 각 원소를 넘겨서 람다가 true를 반환하는 원소만 모은다. 주어진 술어를 만족하는 모든 원소를 선택한다. (술어란 참/거짓을 반환하는 함수를 말함.) 컬렉션에서 원치 않는 원소를 제거한다. 하지만 변환하는 것은 불가능하다. val list = listOf(1,..

  • format_list_bulleted Kotlin in Action
  • · 2024. 2. 25.
  • textsms
5. [1] 람다 식과 멤버 참조

5. [1] 람다 식과 멤버 참조

람다는 기본적으로 다른 함수에 넘길 수 있는 작은 코드 조각을 뜻한다. 이를 사용하면 쉽게 공통 코드 구조를 라이브러리 함수로 뽑아내는 것이 가능하다. (1) 람다 소개: 코드 블럭을 함수 인자로 넘기기 button.setOnClickListener(new OnClickListener) { @Override public void onClick(View view) { /* 버튼을 클릭 시 실행 할 동작 */ } } button.setOnClickListener { /* 버튼을 클릭 시 실행 할 동작*/ } 함수형 프로그래밍에서는 함수를 하나의 값 처럼 다루어서 번거로운 문제들을 해결한다. 클래스를 선언하고 인서턴스를 함수에 넘기는 대신, 함수를 직접 다른 함수에 전달한다. 람다 식을 사용하면, 함수를 선언..

  • format_list_bulleted Kotlin in Action
  • · 2024. 2. 25.
  • textsms
3. [6] 코드 다듬기: 로컬 함수와 확장

3. [6] 코드 다듬기: 로컬 함수와 확장

DRY 원칙(Don't Repeat Yourself)을 피하기는 쉽지 않다. 메서드 추출 리팩토링을 통해서 긴 메서드를 부분부분 나눠서 재활용 하는 것은 가능하다. 해당 해결방법의 경우 더 복잡해지기에, 메서드를 별도의 내부 클래스에 넣게 된다면 불필요한 준비코드가 늘어난다. Kotlin에서는 추출한 함수를 원 함수에 중첩시킬 수 있다. class User(val id: Int, val name: String, val address: String) fun saveUser(user: User) { if(user.name.isEmpty()) { throw IllegalArgumentException( "Can't save user ${user.id}: Empty Name" ) } if(user.address..

  • format_list_bulleted Kotlin in Action
  • · 2024. 2. 22.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • navigate_next
공지사항
  • 즐거운 코딩을 하자.
전체 카테고리
  • 분류 전체보기 (26)
    • Study (7)
    • Error (2)
    • Project (2)
    • Kotlin in Action (15)
    • Experience (0)
전체 방문자
오늘
어제
전체
최근 글
인기 글
최근 댓글
태그
  • #작동을 안함
  • #Stream Chat SDK
  • #무선 디버깅 QR 안됨
  • #인앱채팅
  • #KotlinInAction
  • #채팅구현
  • #MBTI구현
  • #Plugin 적용기
  • #자동 급식기
  • #공부 기록용
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바