전체 글 (75) 썸네일형 리스트형 [Kotlin] DSL (Domain Specific Language) 안녕하세요.오늘은 DSL에 대해 알아보도록 하겠습니다.DSLDomain Specific Language의 약자로,특정 도메인에 맞춘 언어 스타일로 코드를 작성할 수 있도록 Kotlin의 기능을 활용하는 것입니다.HTML이나 SQL처럼 특정 목적을 위해 존재하는 언어입니다.ExampleDSL을 활용하면 HTML 관련 코드를 훨씬 쉽게 작성할 수 있습니다.fun main() { // DSL 사용 예제 val htmlContent = html { tag("head") { tag("title") { +"My Page Title" } } tag("body") { tag("h1") { +"Welcome to Kotlin DSL".. [Kotlin] SAM & invoke 안녕하세요.오늘은 SAM (Single Abstract Method) 과 invoke에 대해서 알아보겠습니다.SAM과 invoke는 함수형 프로그래밍을 더 간결하고 쉽게 작성하기 위해 지원하는 기능입니다.SAM (Single Abstract Method)하나의 추상 메서드만 포함하는 인터페이스를 SAM 이라고 합니다 추상 메서드를 하나만 포함하는 클릭 리스너를 만들어 보겠습니다interface OnClickListener { fun onClick()} 해당 인터페이스를 쓰는 예시입니다val listener = object : OnClickListener { override fun onClick() { println("Clicked") }}listener.onClick() /.. [Kotlin] 함수형 프로그래밍 안녕하세요.오늘은 함수형 프로그래밍에 대해 알아보겠습니다함수형 프로그래밍코틀린은 함수형 프로그래밍을 지원하는 언어입니다함수형 프로그래밍- 함수를 일급 시민으로 취급- 함수를 변수처럼 다루고,- 고차 함수를 통해 다른 함수의 인자로 넘기거나 반환 값으로 사용할 수 있음특징함수형 프로그래밍의 특징을 알아보도록 하겠습니다 1) 순수 함수같은 입력에 대해 항상 같은 출력을 반환하는 함수입니다외부 상태나 함수 외부에 영향을 받지 않는 함수입니다fun add(a: Int, b: Int): Int = a + b 2) 불변성함수형 프로그래밍에서는 변수를 변경하지 않고 새로운 값을 생성하여 사용합니다불변 데이터는 코드의 안정성을 높이고, 데이터 경쟁을 방지하는데 유용합니다 (특히, 동시성 프로그래밍에서)// 불변성 예제.. [Kotlin] Scope Function 안녕하세요.오늘은 Scope Function에 대해서 알아보도록 하겠습니다.정리오늘 다룰 Scope Function은 총 5가지로,각 함수에 대해 간단하게 정리부터 하고 시작하겠습니다.Scope Function참조 방법Return TypeletitLambda ResultrunthisLambda ResultwiththisLambda ResultapplythisContext ObjectalsoitContext Objectlet권장 사용 시점nullable 타입을 처리할 때임시 변수를 줄이고, 체이닝을 통해 코드의 가독성을 높일 때부수적인 작업을 수행한 후 객체를 반환하지 않을 때장점null 안정성을 간단하게 구현할 수 있다Beforeval input: String? = getInput()if (input !.. [Unit Test] MockK (2) - mockkObject, mockkStatic, mockkConstructor 안녕하세요.오늘은 mockkObject와 mockkStatic, mockkConstructor에 대해 알아보겠습니다.mockkObjectkotlin의 object class와 enum class를 모킹할 때 사용하는 명령어 입니다.spy 객체와 비슷하게 작동하며, 스터빙하지 않은 함수들은 기존 로직을 따릅니다.사용을 다 하면, unmock을 해줘야 다른 테스트 함수에 영향을 주지 않습니다.objectkotlin의 object class를 모킹해 원하는 값으로 스터빙 하는 예제를 살펴봅시다. object codeobject MySingleton { fun functionOne(): String { return "Original Function One" } fun function.. [Kotlin] Sealed Class 안녕하세요.오늘은 Sealed Class에 대해서 알아보도록 하겠습니다. 상속Sealed Class를 알아보기 전, 상속에 대해 짚고 넘어가겠습니다. 아래와 같이 상속을 받는 클래스가 있습니다. 컴파일 타임 때Dog는 Animal을 상속받는 것을 알 수 있습니다.오버라이드가 안됐다고 에러를 보여준다던지 등을 컴파일 때 잡을 수 있습니다.Animal은 어떤 클래스가 자신을 상속받는지 모릅니다.하지만 Sealed Class는 컴파일 타임 때 자신의 하위 클래스 타입이 무엇인지 알 수 있습니다.-> 컴파일 타임에 모든 가능한 하위 타입을 처리하도록 보장할 수 있습니다. 사용 예제먼저, Sealed Class를 사용하지 않은 예제를 한번 보겠습니다.else를 사용하지 않으면 컴파일 에러가 납니다.abstract.. [Kotlin] Extension Function (확장 함수) 안녕하세요.코틀린이 제공하는 유용한 기능으로 확장 함수가 있습니다. 오늘은 확장 함수 선언과 테스트 방법에 대해 알아보도록 하겠습니다.확장 함수Kotlin의 확장 함수 (Extension Function) 는 기존 클래스의 코드를 수정하지 않고도,그 클래스에 새로운 함수를 추가하는 기능입니다. fun String.isPalindrome(): Boolean { return this == this.reversed()}fun main() { val word1 = "madam" val word2 = "hello" println("${word1.isPalindrome()}") // true println("${word2.isPalindrome()}") // false} 확장 함수는 .. [Unit Test] MockK (1) - Mock, Spy 안녕하세요.오늘은 코틀린에서 사용하는 모킹 프레임워크, MockK에 대해 알아보도록 하겠습니다.MockK?Mock + Kotlin의 합성어 입니다. MockMock 객체는 실제 객체를 대신하여 가짜 객체를 불러온 뒤, 특정 동작을 지정할 수 있는데 사용됩니다.이러한 행위를 모킹 (mocking) 이라고 합니다. 의의실제 객체의 의존성을 제거하고, 테스트를 독립적이고 쉽게 제어할 수 있는 기술입니다. 아래는 의존성이 있는 클래스 예시입니다.class Server { fun getGrade(user: User): String { return when { user.getScore() >= 90 -> "A" user.getScore() >= 80 -> ".. 이전 1 2 3 4 5 6 ··· 10 다음