본문 바로가기

코틀린

(8)
Null safety Nullable types and non-nullable types 출처 : 코틀린 공식문서 https://kotlinlang.org/docs/null-safety.html#collections-of-a-nullable-type (null 이 가능한 타입과 불가능한 타입) null 이 가능한 타입에 접근하는 방법 ? 연산자 사용 ?. 연산자 사용 코틀린타입의 목적은 객체가 null 이 된는 것을 방지하는 것을 목적으로 하고 있다. (The Billion Dollar Mistake 이 아저씨가 말한대로 말이다.) 자바를 포함해서 수많은 프로그래밍언어에서 위험한 내용은 null인 객체의 멤버에 접근하는 것이고 이는 객체 null 예외를 발생시킨다. 자바에서는 NullPointerException 과 같고 줄..
Coroutine2 코루틴에 관해서는 공부해야할게 꽤 많은 것 같아서 공부내용이 추가되는대로 계속 글을 쓰고 나중에 한번에 몰아서 정리를 해야겠다. 코루틴은 경량 쓰레드라고도 불림. 그 이유는? -> 쓰레드당 하나의 명령만 실행된다. 쓰레드 보다 생성비용이 가볍고 빠르다. 근데 코루틴이 contextSwithing 을 계속 해서 상황에 따라서는 쓰는게 오히려 손해일수도 있다. 코루틴을 만드는 방법은 세가지가 있다. 1. CoroutineScope.async() 를 활용하는 방법 -코루틴 내에서 예외가 발생할 수 있기 때문에 이 메소드는 Deffered 를 리턴한다. 리턴값이 존재한다. 2.CoroutineScope.launch() 를 활용하는 방법 -결과를 반환하지 않고 실행하거나 취소할 수 있는 객체인 Job을 리턴해준다..
Debug coroutines using IntelliJ IDEA – tutorial (IntlliJ IDEA를 활용해서 코루틴을 디버깅 하는 방법) 코루틴에서 디버깅 하는 방법에 관해서 알아 볼것이다. 공식문서를 참조했다. https://kotlinlang.org/docs/debug-coroutines-with-idea.html#create-coroutines import kotlinx.coroutines.* // 코루틴을 감싸기 위해서 runBlocking() 을 사용. fun main() = runBlocking { // 지연된 코루틴 값을 설정하기 위해서 async 예약어를 사용해서 변수 a와 b를 설정. val a = async{ println("I'm computing part of the answer") 6 } val b = async{ println("I'm computing another part of the answer") 7 } /..
Coroutine (조금 더 글을 보충해야할 필요가 있다.) 코틀린의 코루틴은 suspending functions 는 future나 promise보다 훨씬 좋다. kotlin 공식문서 피셜 비동기 동작에서 더욱 안전하고 에러도 적은 추상화를 제공해준다고 한다. https://kotlinlang.org/docs/coroutines-guide.html 뭐.. 위의 자료를 참고하면 될듯. kotlin의 공식문서를 참고해서 공부한 내용을 정리한 것이다. 아래는 공식문서 링크. https://kotlinlang.org/docs/coroutines-basics.html#your-first-coroutine Your first coroutine 코루틴은 일시정지가 가능한 구성요소다. 스레드 개념과 비슷한데, 다른 코드를 동시실행하는..
inline 함수와 reified type inline 함수란? 함수 호출 시 별도로 분리된 위치의 레이블로 점프하여 실행되는 일반 함수와는 달리 호출 부분을 함수 전체 코드로 치환하여 컴파일한다. 고차함수(함수를 인자로 전달받거나 함수를 결과로 반환하는 함수 : 람다)수를 사용할때 오버헤드 현상이 발생하지 않도록 해주는 함수다. 오버헤드(overhead)는 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등을 말한다. 예를 들어 A라는 처리를 단순하게 실행한다면 10초 걸리는데, 안전성을 고려하고 부가적인 B라는 처리를 추가한 결과 처리시간이 15초 걸렸다면, 오버헤드는 5초가 된다. 또한 이 처리 B를 개선해 B'라는 처리를 한 결과, 처리시간이 12초가 되었다면, 이 경우 오버헤드가 3초 단축되었다고 말한다 고차함수를 사용할때..
lamda 람다란? 정의 A lambda function is a simple, short, throwaway function which is designed to be created inline in code. They're also known as lambda expressions, anonymous functions, lambda abstractions, lambda form, or function literals. 람다함수란 -함수형 프로그래밍에서 사용되는 개념으로 익명 함수라고도 부른다. -자바8부터 지원하고 불필요한 코드를 줄이고 가독성을 향상 시키는 것을 목적으로 두고 있다. 익명함수를 람다식으로 바꾸기 근데 위와 같이 람다식으로 바꾸기 위해서는 몇가지 충족요건이 필요하다. 안맞으면 람다식으로 표현할 수 없다...
Object expressions and declarations (객체 표현식과 선언식) 출처 https://kotlinlang.org/docs/object-declarations.html#using-anonymous-objects-as-return-and-value-types 코틀린의 object와 companion object를 공부하기 위해서 공식문서의 글을 보고 해석 및 의역후 정리한 내용이다. 만약 공식문서를 참조하면서 공부한다면 매우 요긴하게 읽을 수 있을 것이다. Object expressions and declarations Sometimes you need to create an object that is a slight modification of some class, without explicitly declaring a new subclass for it. Kotlin ..
의존성 주입(Dependency Injection) 코틀린 (안드로이드 공식문서를 참고하고 작성한 글입니다. 코틀린으로 설명되어 있어서 작성해봅니다.) https://developer.android.com/training/dependency-injection 의존성 주입이란? 하나의 객체가 다른 객체에 의존성을 제공해주는 기술을 의미한다. 의존성 주입 장점 의존성 주입을 하면 아래와 같은 이점이 존재한다. 코드 재활용 리팩토링하기 편함 테스팅 하기 편함 의존성 주입 방법 의존성 주입은 두가지가 존재한다. 생성자에 의한 의존성 주입 멤버변수에 의한 의존성 주입 하나씩 알아보기로 하고 일단 의존성 주입이 되지 않은 코드부터 한번 살펴보자. 공식문서를 읽다가 느낀건데 의존성 주입을 하지 않은 것은 객체간의 결합도가 높은 것과 같다. 일단 의존성 주입이 되지 않은 코드..