728x90
반응형
📌 TIL (Today I Learned) - Kotlin 문법 총정리 & 코루틴 실행 방법
🚀 오늘 배운 점
- Kotlin 기본 문법을 총 정리하면서 주요 개념을 다시 한번 확실히 다졌다.
- 코루틴을
main
함수에서 실행하는 방법을 배웠고,runBlocking
과CoroutineScope.launch
의 차이점을 이해했다. - 안드로이드에서 UI 스레드에서 실행하려면
Dispatchers.Main
을 사용해야 함을 알게 됐다.
오늘은 Kotlin의 주요 문법을 정리하고, 추가로 코루틴을 main
함수에서 실행하는 방법을 배웠다.
✅ 1. Kotlin 기본 문법 정리
🔹 변수와 상수
val
: 변경 불가능한 값 (Immutable)var
: 변경 가능한 값 (Mutable)const val
: 컴파일 타임 상수 (탑 레벨에서 사용)val a = 10 const val b = 20 // 컴파일 타임 상수
fun main() {
var i: Int = 10
var name: String = "코틀린"
i = 20 // 재대입 가능
}
🔹 형변환 (`.to~~`)
```kotlin
fun main() {
var i = 10
var l = 20L
l = i.toLong()
i = l.toInt()
}
🔹 String 템플릿
fun main() {
val name = "코틀린"
println("현재 배우고 있는 언어는 $name 입니다.")
println("현재 배우고 있는 언어는 ${name + 10} 입니다.") // 연산 가능
}
🔹 조건문 (if
, when
)
val i = 5
val result = when {
i > 10 -> "10 보다 크다"
i > 5 -> "5 보다 크다"
else -> "!!!!"
}
🔹 반복문
for (i in 0..3) {
println(i)
}
🔹 리스트와 배열
val list = listOf(1, 2, 3) // 변경 불가
val mutableList = mutableListOf(1, 2, 3) // 변경 가능
mutableList.add(4)
🔹 예외 처리
try {
println(list[5])
} catch (e: Exception) {
println(e.message)
}
🔹 Null 처리 (?
, !!
, ?.let
)
var name: String? = null
name?.let {
println("이름: $it") // null이 아닐 때만 실행
}
🔹 함수 정의
fun sum(a: Int, b: Int) = a + b
fun sumWithDefault(a: Int, b: Int, c: Int = 0) = a + b + c
🔹 클래스와 데이터 클래스
data class Person(
private val name: String,
var age: Int
)
🔹 상속과 인터페이스
interface Drawable {
fun draw()
}
abstract class Animal {
open fun move() { println("이동") }
}
class Cat : Animal(), Drawable {
override fun move() { println("살금살금") }
override fun draw() { println("그리기") }
}
🔹 제네릭
class Box<T>(var value: T)
val box = Box(10)
🔹 고차 함수
fun myFunc(callback: () -> Unit) {
println("함수 시작")
callback()
println("함수 끝")
}
myFunc { println("콜백 함수 실행!") }
✅ 2. 코루틴 실행 방법 정리
오늘 질문한 코루틴을 main
함수에서 실행하는 방법에 대해 정리하면:
🔹 runBlocking
사용 (블로킹 방식)
import kotlinx.coroutines.runBlocking
fun main() = runBlocking {
myFunc { println("함수 호출") }
}
suspend fun myFunc(callback: () -> Unit) {
println("함수 시작")
callback()
println("함수 끝")
}
📌 runBlocking
은 메인 스레드가 끝나지 않고 기다려줌.
🔹 CoroutineScope.launch
사용 (비동기 실행)
import kotlinx.coroutines.*
fun main() {
val scope = CoroutineScope(Dispatchers.Default)
scope.launch {
myFunc { println("함수 호출") }
}
Thread.sleep(1000) // 메인 스레드가 종료되지 않도록 대기
}
📌 Dispatchers.Main
을 사용하면 안드로이드 UI 스레드에서 실행 가능.
👉 앞으로 코루틴을 사용할 때 적절한 방식(runBlocking
vs launch
)을 선택하는 것이 중요하겠다! 🚀
728x90
반응형
'Blog > TIL' 카테고리의 다른 글
2025-02-13 (목) (2) | 2025.02.13 |
---|---|
2025-02-12 (수) (2) | 2025.02.12 |
2025-02-10 (월) (0) | 2025.02.10 |
2025-02-06 (목) (2) | 2025.02.06 |
2025-02-05 (수) (0) | 2025.02.05 |
댓글