Tech/Kotlin
-
Kotlin의 suspend 키워드를 이용한 비동기 프로그래밍Tech/Kotlin 2023. 10. 29. 12:39
Kotlin에서 suspend 키워드는 코루틴을 사용하여 비동기 프로그래밍을 할 때 사용합니다. suspend 함수는 코루틴 안에서 실행되며, 비동기 작업을 수행할 수 있게 해줍니다. 이 함수는 실행을 중단할 수 있고, 필요에 따라 나중에 다시 시작할 수 있습니다. 이런 특징 때문에 suspend 함수를 사용하면 메인 스레드를 차단하지 않으면서 비동기 작업을 간결하게 처리할 수 있습니다. suspend 함수의 특징 suspend 함수는 코루틴 스코프 내에서만 호출할 수 있습니다. suspend 함수 내부에서는 다른 suspend 함수를 호출할 수 있습니다. suspend 함수는 비동기 작업을 수행할 때 유용하며, delay(), async(), await()와 같은 코루틴 빌더와 함께 사용됩니다. sus..
-
함수형 인터페이스 consumer, supplier, FunctionTech/Kotlin 2023. 10. 8. 15:22
Java의 함수형 인터페이스인 Consumer, Supplier, 그리고 Function은 각각 특별한 유형의 작업을 수행하기 위해 사용됩니다. 아래에서 이들 각각에 대해 살펴보고 코틀린에서 어떻게 사용할 수 있는지 알아보겠습니다 1. Consumer Consumer 인터페이스는 입력을 받고 아무런 결과도 반환하지 않는 accept(T t) 메서드를 가집니다. 다시 말해, 이 함수형 인터페이스는 입력을 "소비"합니다. fun consume(consumer: (T) -> Unit, input: T) { consumer(input) } fun main() { val printConsumer: (String) -> Unit = { println(it) } consume(printConsumer, "Hello,..
-
스프링 부트와 코틀린으로 구현하는 온라인 쇼핑몰 결제 서비스 APITech/Kotlin 2023. 9. 28. 13:53
오늘은 스프링 부트와 코틀린을 활용하여 온라인 쇼핑몰의 다양한 결제 수단을 지원하는 API를 개발해볼 것입니다. 특히, 팩토리 패턴을 이용하여 각 결제 수단에 대응되는 서비스를 효과적으로 구현하는 방법에 대해서 알아보겠습니다. 1. 결제 수단 및 2차 결제 수단 Enum 타입 정의 먼저, 결제 수단 및 2차 결제 수단을 Enum 타입으로 정의합니다. enum class CashPaymentType { CREDIT_CARD, BANK_TRANSFER } enum class SecondaryPaymentType { POINT, COUPON } 📌 여기서, CashPaymentType은 현금 결제 수단을, SecondaryPaymentType은 포인트나 쿠폰과 같은 2차 결제 수단을 나타냅니다. 2. 결제 서..
-
Kotlin으로 동일한 숫자가 연속적으로 포함되어 있는지 확인하기Tech/Kotlin 2023. 9. 28. 13:34
fun containsConsecutiveNumbers(target: String, count: Int): Boolean { for (i in 0 until target.length - count + 1) { val substring = target.substring(i, i + count) if (substring.toSet().size == 1) { return true } } return false } 안녕하세요! 오늘은 Kotlin을 활용하여 숫자만 포함된 문자열에서 특정 숫자가 연속적으로 주어진 카운트 수만큼 포함되어 있는지 확인하는 방법에 대해 알아보겠습니다. 1. 함수 설명: 우리가 작성한 containsConsecutiveNumbers 함수는 두 개의 파라미터를 받습니다: target: 검..
-
URL의 파라미터값을 Kotlin에서 Map으로 변환하는 방법Tech/Kotlin 2023. 9. 28. 13:33
fun decodeUrlParams(url: String): Map { val result = mutableMapOf() val urlParts = url.split("?") if (urlParts.size > 1) { val query = urlParts[1] val pairs = query.split("&") for (pair in pairs) { val keyValue = pair.split("=") if (keyValue.size > 1) { result[keyValue[0]] = keyValue[1] } } } return result } 1. 함수 설명: URL은 주로 ? 뒤에 key-value 쌍의 파라미터들을 가집니다. 예를 들어, http://example.com/page?name=Joh..