Kotlin μ΄λ
Kotlinμ κ°κ²°νκ³ μμ νλ©° μ μ§ κ΄λ¦¬ κ°λ₯ν μ½λλ₯Ό λ μ½κ² μμ±ν μ μλλ‘ λ€μν κΈ°λ₯μ μ 곡νλ μ΅μ μ€ν μμ€ νλ‘κ·Έλλ° μΈμ΄μ λλ€. λ€μμ Kotlinμ κ°μ₯ μ μ©ν κΈ°λ₯ μ€ μΌλΆμ λλ€.
- Null μμ μ±: Kotlinμλ μ»΄νμΌ νμμ null ν¬μΈν° μμΈλ₯Ό λ°©μ§νλ κ°λ ₯ν μ ν μμ€ν μ΄ μμ΅λλ€. λ°νμ μ€λ₯ μμ΄ null κ°μ μ½κ² μ²λ¦¬ν μ μλ nullable νμ μμ€ν μ μ 곡ν©λλ€. μ΄ κΈ°λ₯μ μ½λμ μμ μ±κ³Ό μ λ’°μ±μ κ°μ νλ λ° λμμ΄ λ©λλ€.
- νμ₯ ν¨μ: Kotlinμ νμ₯ ν¨μλ₯Ό μ¬μ©νλ©΄ κ°λ°μκ° μμ€ μ½λλ₯Ό μμ νμ§ μκ³ λ κΈ°μ‘΄ ν΄λμ€μ μ ν¨μλ₯Ό μΆκ°ν μ μμ΅λλ€. μ΄ κΈ°λ₯μ μ¬μ©νλ©΄ λ κ°κ²°νκ³ μ½κΈ° μ¬μ΄ μ½λλ₯Ό μμ±ν μ μμΌλ©° μ½λ μ€λ³΅μ μ€μ΄λ λ° λμμ΄ λ μ μμ΅λλ€.
- λ°μ΄ν° ν΄λμ€: Kotlinμ λ°μ΄ν° ν΄λμ€λ ν΄λμ€λ₯Ό μ μνλ κ°κ²°ν λ°©λ²μ μ 곡ν©λλ€. λ°μ΄ν°. λ°μ΄ν° ν΄λμ€λ ν΄λΉ μμ±μ κΈ°λ°μΌλ‘ equals(), hashCode() λ° toString()κ³Ό κ°μ μ μ©ν λ©μλλ₯Ό μλμΌλ‘ μμ±ν©λλ€. μ΄λ κ² νλ©΄ μμ©κ΅¬ μ½λλ₯Ό μ€μ΄κ³ μ½λλ₯Ό λ κ°κ²°νκ³ μ½κΈ° μ½κ² λ§λ€ μ μμ΅λλ€.
- μ½λ£¨ν΄: Kotlinμ λΉλκΈ° μμ μ μνν μ μλ κ²½λ μ€λ λμΈ μ½λ£¨ν΄μ κΈ°λ³Έμ μΌλ‘ μ§μν©λλ€. . μ½λ£¨ν΄μ μ½κ³ μ μ§νκΈ° μ¬μ΄ λΉλκΈ° μ½λλ₯Ό μμ±νλ λ° μ¬μ©ν μ μμ΅λλ€. λΉμ°¨λ¨ μ½λλ₯Ό μμ±νλ κ°λ¨νκ³ ν¨μ¨μ μΈ λ°©λ²μ μ 곡ν©λλ€.
- Javaμμ μνΈ μ΄μ©μ±: Kotlinμ Javaμ μνΈ μ΄μ© κ°λ₯ν©λλ€. μ¦, Kotlin μ½λλ Java λΌμ΄λΈλ¬λ¦¬ λ° νλ μμν¬λ₯Ό μ¬μ©ν μ μμ΅λλ€. κ·Έ λ°λ. μ΄ κΈ°λ₯μ μ¬μ©νλ©΄ κΈ°μ‘΄ Java νλ‘μ νΈλ₯Ό KotlinμΌλ‘ μ½κ² λ§μ΄κ·Έλ μ΄μ ν μ μμ΅λλ€.
- μ€λ§νΈ μΊμ€νΈ: Kotlinμλ μ€λ§νΈ μΊμ€νΈλΌλ κΈ°λ₯μ΄ μμ΄ μ»΄νμΌλ¬κ° μλμΌλ‘ λ³μλ₯Ό λ³΄λ€ κ΅¬μ²΄μ μΈ λ³μλ‘ μΊμ€νΈν μ μμ΅λλ€. μ ν κ²μ¬λ₯Ό κΈ°λ°μΌλ‘ ν μ ν. μ΄ κΈ°λ₯μ μ¬μ©νλ©΄ κ°κ²°νκ³ μμ ν μ½λλ₯Ό λ μ½κ² μμ±ν μ μμ΅λλ€.
- Lambda ννμ: Kotlinμ μ΅λͺ ν¨μλ₯Ό μ μνλ κ°κ²°ν λ°©λ²μΈ λλ€ ννμμ μ§μν©λλ€. μ΄ κΈ°λ₯μ μμ©κ΅¬ μ½λλ₯Ό μ€μ΄κ³ μ½λλ₯Ό λ κ°κ²°νκ³ μ½κΈ° μ½κ² λ§λλ λ° λμμ΄ λ μ μμ΅λλ€.
μ λ°μ μΌλ‘ Kotlinμ Kotlinμ κ°λ ₯νκ³ λ€μ¬λ€λ₯νκ² λ§λλ λ€μν μ μ©ν κΈ°λ₯μ μ 곡ν©λλ€. κ΄λ²μν μμ© νλ‘κ·Έλ¨μ ꡬμΆνκΈ° μν μΈμ΄μ λλ€. null μμ μ±, νμ₯ κΈ°λ₯, λ°μ΄ν° ν΄λμ€, μ½λ£¨ν΄ λ° Javaμμ μνΈ μ΄μ©μ±μ μ½λμ μμ μ±, μ±λ₯ λ° μ μ§ κ΄λ¦¬ κ°λ₯μ±μ κ°μ νλ €λ κ°λ°μμκ² λ§€λ ₯μ μΈ μ νμ λλ€.
λ€μμ Kotlin λΌμ΄λΈλ¬λ¦¬μμ μ 곡νλ λͺ κ°μ§ μ μ©ν κΈ°λ₯μ λλ€.
- λ΄μΈλ ν΄λμ€: Kotlinμ κ°λ°μκ° λ«ν ν΄λμ€ κ³μΈ΅ ꡬ쑰λ₯Ό μ μν μ μλ λ΄μΈλ ν΄λμ€λΌλ κΈ°λ₯μ μ 곡ν©λλ€. λ΄μΈλ ν΄λμ€λ μ ν리μΌμ΄μ μμ λ°μν μ μλ λ€μν μ νμ μ€λ₯μ κ°μ μ νλ ν΄λμ€ κ³μΈ΅ ꡬ쑰λ₯Ό λνλ΄λ λ° μ μ©ν©λλ€.
- νμ₯ κΈ°λ₯: Kotlinμ νμ₯ κΈ°λ₯μ μ¬μ©νλ©΄ κ°λ°μκ° μ κΈ°λ₯μ μΆκ°ν μ μμ΅λλ€. μμ€ μ½λλ₯Ό μμ νμ§ μκ³ κΈ°μ‘΄ ν΄λμ€μ μ΄ κΈ°λ₯μ μ¬μ©νλ©΄ λ κ°κ²°νκ³ μ½κΈ° μ¬μ΄ μ½λλ₯Ό μμ±ν μ μμΌλ©° μ½λ μ€λ³΅μ μ€μ΄λ λ° λμμ΄ λ μ μμ΅λλ€.
- νμ€ κΈ°λ₯: Kotlinμ λ€μμ μννλ λ° μ¬μ©ν μ μλ λ€μν νμ€ κΈ°λ₯μ μ 곡ν©λλ€. νν°λ§, λ§€ν λ° μ»¬λ μ μ κΈ°μ κ°μ μΌλ°μ μΈ μμ . μ΄λ¬ν ν¨μλ μμ©κ΅¬ μ½λλ₯Ό μ€μ΄κ³ μ½λλ₯Ό λ κ°κ²°νκ³ μ½κΈ° μ½κ² λ§λλ λ° λμμ΄ λ μ μμ΅λλ€.
- μ½λ£¨ν΄: Kotlinμ λΉλκΈ°μμ μνν μ μλ κ²½λ μ€λ λμΈ μ½λ£¨ν΄μ κΈ°λ³Έμ μΌλ‘ μ§μν©λλ€. μ΄μ. μ½λ£¨ν΄μ μ½κ³ μ μ§νκΈ° μ¬μ΄ λΉλκΈ° μ½λλ₯Ό μμ±νλ λ° μ¬μ©ν μ μμ΅λλ€. λΉμ°¨λ¨ μ½λλ₯Ό μμ±νλ κ°λ¨νκ³ ν¨μ¨μ μΈ λ°©λ²μ μ 곡ν©λλ€.
- λ²μ: Kotlinμ λ λμ μ¬μ΄μ κ° μνμ€λ₯Ό λνλ΄λ λ° μ¬μ©ν μ μλ λ²μ ν΄λμ€λ₯Ό μ 곡ν©λλ€. λ²μλ μμΌ λλ 그리λμ μ«μμ κ°μ μΌλ ¨μ κ°μ λ°λ³΅νλ λ° μ μ©ν©λλ€.
- 컬λ μ : Kotlinμ λ€μμ ν¬ν¨ν λ€μν 컬λ μ ν΄λμ€λ₯Ό μ 곡ν©λλ€. λͺ©λ‘, μ§ν© λ° μ§λ. μ΄λ¬ν ν΄λμ€λ νν°λ§, λ§€ν λ° μ λ ¬κ³Ό κ°μ 컬λ μ μ‘°μμ μν λ€μν μμ μΈνΈλ₯Ό μ 곡ν©λλ€.
- λ¬Έμμ΄ μ‘°μ: Kotlinμ λ€μκ³Ό κ°μ λ¬Έμμ΄ μ‘°μμ μν λ€μν κΈ°λ₯μ μ 곡ν©λλ€. λΆν , λ€λ¬κΈ° λ° μμ μ§μ . μ΄λ¬ν ν¨μλ μμ©κ΅¬ μ½λλ₯Ό μ€μ΄κ³ μ½λλ₯Ό λ κ°κ²°νκ³ μ½κΈ° μ½κ² λ§λλ λ° λμμ΄ λ μ μμ΅λλ€.
μ λ°μ μΌλ‘ Kotlin λΌμ΄λΈλ¬λ¦¬λ κ°λ°μκ° λ€μμ μννλ λ° λμμ΄ λλ λ€μν μ μ©ν κΈ°λ₯μ μ 곡ν©λλ€. λ³΄λ€ κ°κ²°νκ³ μμ νλ©° μ μ§ κ΄λ¦¬ κ°λ₯ν μ½λλ₯Ό μμ±νμμμ€. λ΄μΈλ ν΄λμ€, νμ₯ ν¨μ, νμ€ ν¨μ, μ½λ£¨ν΄, λ²μ, 컬λ μ λ° λ¬Έμμ΄ μ‘°μ ν¨μλ κ΄λ²μν μ ν리μΌμ΄μ μ ꡬμΆνκΈ° μν κ°λ ₯νκ³ λ€μ¬λ€λ₯ν λΌμ΄λΈλ¬λ¦¬μ λλ€.
Sealed Classes:
sealed class Result<T>
class Success<T>(val data: T) : Result<T>()
class Error<T>(val message: String) : Result<T>()
fun <T> processResult(result: Result<T>) {
when (result) {
is Success -> {
println("Data: ${result.data}")
}
is Error -> {
println("Error: ${result.message}")
}
}
}
Extension Functions:
fun String.capitalizeWords(): String {
return split(" ").joinToString(" ") { it.capitalize() }
}
val str = "kotlin is awesome"
val capitalized = str.capitalizeWords()
println(capitalized) // "Kotlin Is Awesome"
Standard Functions:
val list = listOf(1, 2, 3, 4, 5)
val even = list.filter { it % 2 == 0 }
val sum = list.fold(0) { acc, value -> acc + value }
println(even) // [2, 4]
println(sum) // 15
Ranges:
val range = 1..5
val grid = range.flatMap { i -> range.map { j -> i to j } }
grid.forEach { (x, y) -> println("($x, $y)") }
// (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5)
Collections:
val map = mapOf("a" to 1, "b" to 2, "c" to 3)
val doubled = map.mapValues { (_, value) -> value * 2 }
val sum = map.values.sum()
println(doubled) // {a=2, b=4, c=6}
println(sum) // 6
Coroutines:
suspend fun loadData() = withContext(Dispatchers.IO) {
// Perform network request or other long-running operation
}
fun main() {
GlobalScope.launch {
val result = loadData()
// Process result on main thread
}
}
μ΄ μ½λ μ€λν«μ Kotlin λΌμ΄λΈλ¬λ¦¬μμ μ 곡νλ λͺ κ°μ§ μ μ©ν κΈ°λ₯μ μ¬μ©νλ λ°©λ²μ 보μ¬μ€λλ€. λ΄μΈλ ν΄λμ€, νμ₯ ν¨μ, νμ€ ν¨μ, μ½λ£¨ν΄, λ²μ λ° μ»¬λ μ μ κ°λ°μκ° λ κ°κ²°νκ³ μμ νλ©° μ μ§ κ΄λ¦¬ κ°λ₯ν μ½λλ₯Ό μμ±νλ λ° λμμ΄ λλ λ§μ κΈ°λ₯ μ€ μΌλΆμ λΆκ³Όν©λλ€.