[코틀린 인 액션] Kotlin in Action 3장 보충읽기

2023. 5. 26. 09:34· 📱Kotlin/[GDSC] Kotlin in Action 스터디
목차
  1. Kotlin in Action Chap.3 QnA🔍
  2. #Extension function
  3. #Extension property
  4. #infix
  5. #API
  6. #Receiver Object
반응형

Kotlin in Action Chap.3 QnA🔍

해당 글은 <코틀린 인 액션> 3장을 읽고 스터디원들과 나눈 QnA를 정리한 것입니다. (코틀린 인 액션의 3장 내용 정리는 아래 글 참조)

 

[코틀린 인 액션] Kotlin in Action 3장 정리

해당 챕터에서는 선언 및 호출 기능을 코틀린이 어떻게 개선했는지, 자바 라이브러리를 코틀린 스타일로 어떻게 변환하는지 알아보자. 이를 위해서 코틀린 컬렉션, 문자열 및 정규 표현에 초점

cn-c.tistory.com

#Extension function

확장 함수는 어떤 클래스의 맴버 메소드인 것처럼 호출할 수 있지만 그 클래스의 밖에 선언된 함수를 뜻한다. 확장 함수를 선언한 다음에는 해당 클래스에 속한 것처럼 사용할 수 있다. 즉, ()을 통해 접근 가능하다. 이는 마치 java에서 static으로 만들어진 메소드를 사용하는 것과 비슷하다. 단, 확장 함수의 개념이 캡슐화를 깨는 것은 아니다.

fun String.lastChar(): Char = this.get(this.length-1)
println("Kotlin".lastChar())

#Extension property

확장 함수는 프로퍼티처럼 사용이 가능하다(프로퍼티란, 클래스에 val/var로 정의되는 변수). 이는 곧 기존 클래스 객체에 대한 프로퍼티 형식의 구문으로 사용할 수 있는 API를 추가하는 것이다.

프로퍼티 문법을 사용할 경우 코드를 더 짧게 작성할 수 있어 편리한 상황이 있기 때문에 이와 같은 방식을 사용한다.

val String.lastChar: Char
		get() = get(length -1)
  • 뒷받침하는 필드가 없어 기본 getter를 제공할 수 없으므로 최소한 getter는 꼭 정의를 해야 한다.
  • 초기화 코드에서 계산한 값을 담을 장소가 없으므로 초기화 코드를 쓸 수 없다.

#infix

val map = mapOf(1 to "one", 7 to "seven", 53 to "fifty-three")

//중위 함수로 선언
infix fun Any.to(other: Any) = Pair(this, other)

위의 코드에서 to는 construct가 아니라 infix call, 즉 중위 호출이라는 것을 알 수 있다. 중위 호출은 extenstion 함수나 일반적인 메소드 모두에 활용 가능한데, 이를 위해서는 infix 키워드를 함수 앞에 붙이면 된다. to 함수는 Pair를 리턴한다. 예를 들어, 1 to “one”이라고 사용하면 결과로 (1, “one”)이 반환된다. 이러한 특성은 구조 분해 선언이라고 부른다(객체가 가지고 있는 여러 값을 분해해서 여러 변수에 한꺼번에 초기화하는 것). 구조 분해 선언은 pair 뿐만 아니라 map, loop 등등 여러 요소에 사용 가능하다.

중위 함수를 사용하기 위한 조건은 다음과 같다.

  1. 클래스의 멤버 함수 혹은 확장 함수여야 한다(즉, 반드시 확장 함수일 필요가 없다).
  2. 매개변수는 하나만 가져야 한다.
  3. infix 키워드를 사용하여 정의한다.

#API

확장 함수나 확장 프로퍼티를 만들면, 기존의 자바 collection interface를 불러오는 두 애플리케이션 간의 서비스 계약을 새롭게 만드는 것이다. 새로운 객체를 프로퍼티 형식으로 만든다면 그 객체가 새로운 API가 되는 것이다. 실제의 Collection의 class를 수정한 것이 아니니까, 이를 Interface라고 즉 API라고 할 수 있다.

#Receiver Object

수신 (객체) 타입은 클래스의 이름을 말한다. 확장 함수를 사용하는 객체, 즉 함수를 실행할 객체를 수신 객체라고 부른다.

반응형
저작자표시

'📱Kotlin > [GDSC] Kotlin in Action 스터디' 카테고리의 다른 글

[코틀린 인 액션] Kotlin in Action 5장 보충읽기  (0) 2023.05.29
[코틀린 인 액션] Kotlin in Action 4장 보충읽기  (0) 2023.05.29
[코틀린 인 액션] Kotlin in Action 2장 보충읽기  (0) 2023.05.26
코틀린의 특징 Deep Dive: Functional Programming(함수형 프로그래밍)  (2) 2023.05.18
[코틀린 인 액션] Kotlin in Action 11장 정리  (0) 2023.01.30
  1. Kotlin in Action Chap.3 QnA🔍
  2. #Extension function
  3. #Extension property
  4. #infix
  5. #API
  6. #Receiver Object
'📱Kotlin/[GDSC] Kotlin in Action 스터디' 카테고리의 다른 글
  • [코틀린 인 액션] Kotlin in Action 5장 보충읽기
  • [코틀린 인 액션] Kotlin in Action 4장 보충읽기
  • [코틀린 인 액션] Kotlin in Action 2장 보충읽기
  • 코틀린의 특징 Deep Dive: Functional Programming(함수형 프로그래밍)
Researcher Mode
Researcher Mode
Researcher Mode
Codename Cathy
Researcher Mode
전체
오늘
어제
  • 분류 전체보기 (91)
    • 🤖AIML (11)
    • 🗄️Backend (29)
      • SpringBoot (23)
      • [GDSC] SpringBoot 프로젝트 (6)
      • [GDSC] Solution Challenge (0)
    • 🎨Frontend (1)
    • 👷‍♂️DevOps (14)
      • Kubernetes (2)
      • [구글 K8S 스터디 잼] 입문반 (6)
      • [구글 K8S 스터디 잼] 중급반 (5)
      • Cloud(AWS&GCP) (1)
    • 📱Kotlin (22)
      • [GDSC] Kotlin in Action 스터디 (22)
    • 🧩Algorithm (4)
    • 🖥️Languages (5)
      • 👩‍💻Git (1)
      • 🐍Python (2)
      • ☕JAVA (2)
    • 📖 시험 (1)
    • 🎉연말결산 및 잡담 (3)
    • 💻 컴퓨터 문제 (1)

최근 글

hELLO · Designed By 정상우.v4.2.2
Researcher Mode
[코틀린 인 액션] Kotlin in Action 3장 보충읽기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.