Kotlin (17) 썸네일형 리스트형 [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 !.. [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} 확장 함수는 .. [Kotlin] Null Safety 안녕하세요.이번에 회사에서 Java 언어를 Kotlin으로 바꾸면서 고민하고 찾아봤던 내용을 기반으로 작성했습니다. 그 중 Null 처리에 관해 고민을 많이 했었습니다.그래서 오늘은 Kotlin의 Null Safety에 대해 알아보고 어떻게 이를 적용했는지 알아보겠습니다.Null 처리기존 자바 코드의 NullException을 캐치하는 try - catch 문을 그대로 코틀린으로 가져와서 Not-Null 연산만 덧붙이고 끝내고 싶었습니다.fun printModelLength(model: String?) { try { val length = model!!.length println("The length of the model string is: $length") } ca.. [Kotlin] Coroutine (3) - 예외 처리 안녕하세요. 코루틴 예외 처리에 대해 알아보겠습니다. 사전 지식 코루틴에서 예외 처리는 기존의 예외 처리와는 조금 다른 방식으로 처리합니다. 코루틴은 비동기적으로 동작하고 여러 스레드 간에 분산되어 있을 수 있기 때문에 몇 가지 고려할 사항이 있습니다. 코루틴 구조 코루틴은 계층 구조를 가집니다. 호출한 코루틴은 자식 코루틴이 됩니다. 예외 전파 예외가 발생하면 기본적으로 부모로 전파하게 됩니다. 예외가 발생하면 해당 코루틴은 물론, 자식 코루틴의 작업이 전부 cancel 됩니다. job5에서 예외가 발생하면 job2 -> job1 까지 예외가 전파됩니다. ⇒ 최종적으로 job1을 루트로 하는 subtree 내의 모든 코루틴의 실행이 취소됩니다. 예외 처리 방법 try-catch launch 안의 코드에.. [Kotlin] Coroutine (2) - Use in Kotlin 안녕하세요. 코틀린에서 코루틴을 사용하는 방법에 대해 알아보겠습니다. 스케줄러의 코루틴 관리 스케줄러가 코루틴을 suspend & resume 해서 관리합니다. suspend 현재 코루틴 실행을 일시 중지하고 모든 로컬 변수를 저장합니다. resume 정지되었던 위치부터 정지된 코루틴을 재개합니다. 비동기 작업을 하고 싶으면 suspend 키워드를 함수 앞에 붙여주면 됩니다. suspend fun doSomething() { ... } Dispatcher Dispatcher는 코루틴이 실행되는 스레드 또는 스레드 풀을 관리하는 개념입니다. Kotlin은 코루틴을 어떤 스레드에서 실행할지 정하는데에 사용할 수 있는 3가지 dispatcher를 제공합니다. Dispatchers.Main android 기본 .. 이전 1 2 3 다음 목록 더보기