Kotlin 고급 문법 정리

juntae123456 Lv1

이전 포스트에서는 Kotlin의 기초 문법을 정리했습니다.
이번에는 앱 개발에서 꼭 알아두면 좋은 Kotlin 고급 문법을 소개하려고 합니다.
조금 더 효율적이고 안전한 코드를 작성하고 싶은 분들을 위한 내용입니다.

💎 Data Class (데이터 클래스)

값만 저장하는 용도로 사용하는 클래스를 간편하게 만들 수 있습니다.

1
data class User(val name: String, val age: Int)
  • toString(), equals(), hashCode(), copy() 등이 자동 생성됩니다.
1
2
val user1 = User("Juntae", 25)
val user2 = user1.copy(age = 26)

🔧 Scope Functions (스코프 함수)

객체 초기화, 수정, 임시 범위 설정 등에 사용되는 Kotlin 특유의 함수입니다.

함수명 키워드 반환 주 용도
let it 마지막 줄 null 체크, 결과 변환
run this 마지막 줄 실행 블록
apply this 객체 초기화
also it 객체 부가 동작
with this 마지막 줄 여러 연산 묶기
1
2
3
val user = User("Juntae", 25).apply {
println("이름: $name, 나이: $age")
}

⏱ Coroutine (코루틴)

비동기 작업을 간단하게 처리할 수 있는 Kotlin의 기능입니다.

1
2
3
4
5
6
suspend fun loadData() {
val result = withContext(Dispatchers.IO) {
api.getData()
}
println(result)
}
  • suspend: 일시 중단 가능한 함수
  • Dispatchers.IO, Dispatchers.Main 등으로 스레드 지정
1
2
3
GlobalScope.launch {
loadData()
}

Android에서는 viewModelScope.launch {} 와 같이 ViewModel 안에서 자주 사용됩니다.


➕ Extension Functions (확장 함수)

기존 클래스에 새로운 기능을 추가할 수 있습니다.

1
2
3
4
5
fun String.sayHello() {
println("Hello, $this!")
}

"Juntae".sayHello() // Hello, Juntae!
  • 유틸성 기능이나 UI 동작 확장 시 자주 사용됩니다.

🧩 Sealed Class (봉인 클래스)

상속받는 클래스의 종류를 제한하여 안정적인 when 분기를 가능하게 합니다.

1
2
3
4
sealed class Result
data class Success(val data: String) : Result()
object Loading : Result()
object Error : Result()
1
2
3
4
5
fun handle(result: Result) = when(result) {
is Success -> println(result.data)
Loading -> println("로딩 중")
Error -> println("에러 발생")
}

🔠 Enum Class (열거형 클래스)

미리 정해진 값들로만 상태를 표현할 때 사용합니다.

1
2
3
enum class Direction {
NORTH, SOUTH, EAST, WEST
}
  • when 문이나 UI 상태 제어 등에서 자주 사용됩니다.

🛠 기타 유용한 문법

고차 함수

함수를 매개변수로 받거나 반환하는 함수입니다.

1
2
3
4
5
6
fun operate(a: Int, b: Int, op: (Int, Int) -> Int): Int {
return op(a, b)
}

val sum = operate(3, 5) { x, y -> x + y }
println(sum) // 8

✅ 마무리

Kotlin의 고급 문법은 코드를 더 효율적이고 안정적으로 만들어줍니다.

  • 제목: Kotlin 고급 문법 정리
  • 작성자: juntae123456
  • 작성일 : 2025-06-22 11:00:00
  • 수정일 : 2025-06-21 18:26:40
  • 링크: https://juntae123456.github.io/2025/06/22/kotlin2/
  • 저작권 안내: 이 글은 CC BY-NC-SA 4.0 라이선스를 사용합니다.
댓글