λ°˜μ‘ν˜•

Programming/Kotlin 15

[Kotlin] lateinitλž€?

Intro μ•ˆλ…•ν•˜μ„Έμš”. μ΄λ²ˆμ‹œκ°„μ—λŠ” μ½”ν‹€λ¦°μ˜ lateinit 에 λŒ€ν•΄ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. lateinit μ½”ν‹€λ¦°μ—μ„œ "lateinit"λŠ” 말 κ·ΈλŒ€λ‘œ late + init이 합쳐진 뜻으둜 λ‚˜μ€‘ μ΄ˆκΈ°ν™”λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 즉 지연 μ΄ˆκΈ°ν™” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. Use 일반적으둜 ν΄λž˜μŠ€λ‚˜ 객체의 ν”„λ‘œνΌν‹°λ₯Ό μ„ μ–Έν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€. ν•΄λ‹Ή ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λ³€μˆ˜ μ„ μ–Έ μ‹œ μ¦‰μ‹œ μ΄ˆκΈ°ν™”λ˜μ§€ μ•Šκ³ , λ‚˜μ€‘μ— μ΄ˆκΈ°ν™” ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Condition λ³€μˆ˜λŠ” 클래슀의 멀버 λ³€μˆ˜μΌ λ•Œλ§Œ lateinitλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ³€μˆ˜λŠ” non-null νƒ€μž…μ΄μ–΄μ•Ό ν•˜λ©°, primitive typeμ΄λ‚˜ String λ“±μ˜ 클래슀 νƒ€μž… 등이 될 수 μžˆμŠ΅λ‹ˆλ‹€. λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ μ¦‰μ‹œ μ΄ˆκΈ°ν™”ν•˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€. λ³€μˆ˜λŠ” μ΄ˆκΈ°ν™”λ˜κΈ° 전에 μ‚¬μš©ν•˜λ©΄ ..

Programming/Kotlin 2023.05.10

[Kotlin] Text '..' could not be parsed: Unable to obtain LocalDate from TemporalAccessor 였λ₯˜ 원인 및 ν•΄κ²° 방법

Intro μ•ˆλ…•ν•˜μ„Έμš”. μ½”ν‹€λ¦° μŠ€νŠΈλ§μ„ μ½”ν‹€λ¦° λ‚ μ§œλ‘œ λ³€ν™˜ν•˜λ˜ 도쀑 μ•„λž˜μ™€ 같은 μ—λŸ¬κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. import java.math.BigDecimal import java.math.RoundingMode import java.time.LocalDate import java.time.LocalDateTime import java.time.format.DateTimeFormatter import java.util.* fun main(args: Array) { val input = "2301" val formatter = DateTimeFormatter.ofPattern("yyMM", Locale.KOREA) val date = LocalDate.parse(input, formatter).minusYears..

Programming/Kotlin 2023.03.30

[Kotlin] μ½”ν‹€λ¦° νŠΉμ • λ¬Έμžμ—΄ κΈ°μ€€μœΌλ‘œ 자λ₯΄λŠ” 방법 (split ν•¨μˆ˜ 이용)

Intro μ•ˆλ…•ν•˜μ„Έμš”. μ΄λ²ˆμ‹œκ°„μ—λŠ” μ½”ν‹€λ¦°μ—μ„œ νŠΉμ • λ¬Έμžμ—΄μ„ κΈ°μ€€μœΌλ‘œ 자λ₯΄λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. How to solve the problem μ½”ν‹€λ¦°μ—μ„œ νŠΉμ • λ¬Έμžμ—΄μ„ κΈ°μ€€μœΌλ‘œ 자λ₯΄λŠ” 방법은 λ‹€μ–‘ν•œλ°μš”, μ €λŠ” split ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄λ΄€μŠ΅λ‹ˆλ‹€. μ•„λž˜μ™€ 같은 슀트링이 μžˆλ‹€κ³  κ°€μ •ν•΄λ΄…μ‹œλ‹€. ν•΄λ‹Ή μŠ€νŠΈλ§μ—μ„œ split ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ '-' λ¬Έμžμ—΄ κΈ°μ€€μœΌλ‘œ μž˜λΌμ€λ‹ˆλ‹€. fun main() { val string = "kotlin-typescript-javascript" val result = string.split('-'); println(result) println(result[0]) println(result[1]) println(result[2]) } μœ„ μ½”λ“œ μ‹€ν–‰ κ²°κ³ΌλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. [kot..

Programming/Kotlin 2023.03.14

[Kotlin] μž…λ ₯ 받은 λ‚ μ§œλ‘œ 경과일수 κ΅¬ν•˜λŠ” 방법 (get the day of the year as an integer in Kotlin)

Intro μ•ˆλ…•ν•˜μ„Έμš”. 이번 μ‹œκ°„μ—λŠ” μ½”ν‹€λ¦°μ—μ„œ μž…λ ₯ 받은 λ‚ μ§œλ‘œ 경과일수λ₯Ό κ΅¬ν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. How to solve the problem μ•„λž˜ μ½”λ“œλ₯Ό ν™œμš©ν•˜λ©΄ μž…λ ₯ 받은 λ‚ μ§œλ‘œ ν•΄λ‹Ή κ²½κ³Ό 일수λ₯Ό ꡬ할 수 μžˆμŠ΅λ‹ˆλ‹€. /** * You can edit, run, and share this code. * play.kotlinlang.org */ fun main() { // μœ€λ…„ νŒλ³„ λ©”μ†Œλ“œ (1 μœ€λ…„, 0 평년) fun isLeap(year: Int): Int { return if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) 1 else 0 } fun dayOfYear(year: Int, month: Int, day: Int): Int {..

Programming/Kotlin 2023.03.02

[Kotlin] μ½”ν‹€λ¦° ν˜„μž¬ λ‚ μ§œ DateTime μ—μ„œ μ‹œκ°„ μΆ”κ°€ν•˜λŠ” 법

Intro μ•ˆλ…•ν•˜μ„Έμš”. 이번 μ‹œκ°„μ—λŠ” μ½”ν‹€λ¦°μ—μ„œ ν˜„μž¬ λ‚ μ§œ DateTime μ—μ„œ μ‹œκ°„ μΆ”κ°€ν•˜λŠ” 법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. How to implement μš°μ„  LocalDateTime 을 톡해 ν˜„μž¬ λ‚ μ§œ 및 μ‹œκ°„μ„ κ΅¬ν•©λ‹ˆλ‹€. κ·Έ 이후 plusHours λ©”μ†Œλ“œλ₯Ό 톡해 μ›ν•˜λŠ” κ°’λ§ŒνΌ μ‹œκ°„μ„ 더해주면 λ©λ‹ˆλ‹€. import java.time.LocalDate import java.time.LocalDateTime fun main(args: Array) { val todayDateTime: LocalDateTime = LocalDateTime.now() println("Current date and time: $todayDateTime") println("Add 9 Hour date and time: ${today..

Programming/Kotlin 2023.02.13

[Kotlin] μ½”ν‹€λ¦° 리슀트 list νŠΉμ • ν•„λ“œλ‘œ λ‚΄λ¦Όμ°¨μˆœ(DESC) μ •λ ¬ν•˜λŠ” 방법

Intro μ•ˆλ…•ν•˜μ„Έμš”. 이번 μ‹œκ°„μ—λŠ” μ½”ν‹€λ¦°μ—μ„œ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. How to do μ½”ν‹€λ¦° λ‚΄μž₯ ν•¨μˆ˜μΈ sortedByDescending λ₯Ό μ‚¬μš©ν•˜λ©΄ λ˜λŠ”λ°μš”, λ‚΄λ¦Όμ°¨μˆœμ— μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” νŠΉμ • ν•„λ“œ 값을 λ„£μ–΄μ£Όλ©΄ λ©λ‹ˆλ‹€. result.sortedByDescending { it.date } https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/sorted-by-descending.html

Programming/Kotlin 2023.01.20

[Kotlin] μ½”ν‹€λ¦° λ¬Έμžμ—΄ κ΅μ²΄ν•˜κΈ° / λ¬Έμžμ—΄μ˜ νŠΉμ • μΈλ±μŠ€μ— 문자 λ°”κΎΈλŠ” 방법

Intro μ•ˆλ…•ν•˜μ„Έμš”. 이번 μ‹œκ°„μ—λŠ” μ½”ν‹€λ¦° λ¬Έμžμ—΄ (string)의 νŠΉμ • 인덱슀 문자 λ°”κΎΈλŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. How to do 인덱슀 문자 λ°”κΎΈλŠ” λ§Žμ€ 방법이 μžˆκ² μ§€λ§Œ, μ €λŠ” substring() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ§„ν–‰ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. μ•„λž˜μ™€ 같이 "20230116"μ΄λΌλŠ” λ¬Έμžμ—΄μ΄ μžˆλ‹€κ³  κ°€μ •ν•΄λ΄…μ‹œλ‹€. μ—¬κΈ°μ„œ 인덱슀 4 μœ„μΉ˜μ— "12"둜 λ°”κΎΈκΈ° μœ„ν•΄ μ•„λž˜μ™€ 같이 κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€. substring() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ꡐ체할 문자λ₯Ό λΆ„λ¦¬ν•˜κ³ , + μ—°μ‚°μžλ₯Ό 톡해 λ‚˜λ¨Έμ§€ λ¬Έμžμ—΄μ„ λ”ν•΄μ€λ‹ˆλ‹€. println()을 톡해 λ‚˜μ˜¨ κ²°κ³ΌλŠ” "20231216" μž…λ‹ˆλ‹€. "01"이 "12"둜 잘 λ°”λ€Œμ–΄ λ™μž‘ν•˜κ³  μžˆλ„€μš” :) fun main() { var string = "20230116" val char = "12..

Programming/Kotlin 2023.01.16

[Kotlin] μ½”ν‹€λ¦° mutableList μˆ˜μ • 및 μ‚­μ œν•˜λŠ” 방법

Intro μ•ˆλ…•ν•˜μ„Έμš”. 이번 μ‹œκ°„μ—λŠ” μ½”ν‹€λ¦°μ—μ„œ mutableList λ₯Ό μˆ˜μ • 및 μ‚­μ œν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. MutableList μ½”ν‹€λ¦°μ—μ„œ μˆ˜μ • 및 μ‚­μ œ λ“±κ³Ό 같은 μž‘μ—…μ„ ν•˜κΈ° μœ„ν•΄μ„œλŠ” Listκ°€ μ•„λ‹Œ, mutableList둜 μ„ μ–Έν•΄μ€˜μ•Ό ν•©λ‹ˆλ‹€. 기본적으둜 val, var λ³€μˆ˜λ₯Ό μ œκ³΅ν•˜κ³  μžˆλŠ”λ°μš”, valλŠ” 읽기만 κ°€λŠ₯ν•˜κ³ , var은 읽기 및 μˆ˜μ •μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€. How to do μ•„λž˜ μ½”λ“œμ™€ 같이 μˆ˜μ • ν˜Ήμ€ μ‚­μ œκ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€. μˆ˜μ •ν•˜κ³  싢을 경우, ν•΄λ‹Ή μΈλ±μŠ€μ— μƒˆλ‘œμš΄ 값을 λ„£μ–΄μ£Όλ©΄ 되고, μ‚­μ œλ₯Ό ν•˜κ³  싢을 경우 removeAt() λ©”μ†Œλ“œλ₯Ό ν™œμš©ν•˜μ—¬ μ‚­μ œν•˜κ³ μž ν•˜λŠ” 인덱슀 번호λ₯Ό λ„£μ–΄μ€λ‹ˆλ‹€. fun main() { val list: MutableList = mutableListOf() lis..

Programming/Kotlin 2023.01.16

[Kotlin] λ‚ μ§œ Date μ‹œμž‘μΌλΆ€ν„° μ’…λ£ŒμΌκΉŒμ§€ ν•˜λ£¨μ”© μ¦κ°€μ‹œν‚€λŠ” 방법, μ½”ν‹€λ¦° 반볡문 돌리기

Intro μ•ˆλ…•ν•˜μ„Έμš”. 이번 μ‹œκ°„μ—λŠ” μ½”ν‹€λ¦°μ—μ„œ μ‹œμž‘μΌλΆ€ν„° μ’…λ£ŒμΌκΉŒμ§€ ν•˜λ£¨μ”© μ¦κ°€μ‹œν‚€λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. How to do datesUntil() λ©”μ„œλ“œμ™€, plusDays() λ©”μ„œλ“œλ₯Ό ν™œμš©ν•˜μ—¬ μ‹œμž‘μΌλΆ€ν„° μ’…λ£ŒμΌκΉŒμ§€ 1μ”© μ¦κ°€μ‹œμΌœμ€λ‹ˆλ‹€. /** * You can edit, run, and share this code. * play.kotlinlang.org */ import java.time.LocalDate; fun main() { LocalDate.of(2023, 1, 14) .datesUntil(LocalDate.of(2023, 1, 19).plusDays(1)) .forEach { it -> println(it) } } μ½”λ“œ μ‹€ν–‰ κ²°κ³ΌλŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. 2023-01-14 2023-0..

Programming/Kotlin 2023.01.14

[Kotlin] ν˜„μž¬ λ‚ μ§œ/νŠΉμ • λ‚ μ§œ 및 μ‹œκ°„ κ°€μ Έμ˜€κΈ°

Intro μ•ˆλ…•ν•˜μ„Έμš”. μ΄λ²ˆμ‹œκ°„μ—λŠ” μ½”ν‹€λ¦°μ—μ„œ ν˜„μž¬ λ‚ μ§œ 및 μ‹œκ°„μ„ κ°€μ Έμ˜€λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. How to do ν˜„μž¬ λ‚ μ§œ, μ‹œκ°„ ν˜„μž¬ λ‚ μ§œμ™€ μ‹œκ°„μ€ μ•„λž˜μ˜ λ©”μ†Œλ“œλ₯Ό 톡해 κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€. LocalDateTime.now() : ν˜„μž¬ λ‚ μ§œμ™€ μ‹œκ°„ LocalDate.now : ν˜„μž¬ λ‚ μ§œ import java.time.LocalDate import java.time.LocalDateTime fun main(args: Array) { val dateTime: LocalDateTime = LocalDateTime.now() val date: LocalDate = LocalDate.now() println("Current dateTime: $dateTime") // Current dateTime: ..

Programming/Kotlin 2023.01.12
λ°˜μ‘ν˜•