Kotlin을 써온지 이제 1년 조금 넘은 시점에서 다시 코드를 돌아보고 있자니 Scope function을 많이 활용을 하지만 적절하게 활용하고 있다는 생각이 들지 않았다. 모호한 기준으로 Scope function을 활용하고 있다고 느꼈다. 이번 Kotlin의 Scope function은 Context object와 Return value가 아닌 각 Scope function이 어디에 쓰이는지 위주로 짚어볼 예정이다. 더 자세히 들어감에 앞서서 간단한 사용 가이드는 다음과 같다. let (1) : Non-Nullable 객체에서 람다 함수를 수행할 때 let (2) : 식을 로컬범위의 변수로 사용할 때 (오역 가능성 높음) apply : 객체 구성할 때 run (extension) : 객체 구성과 결..
이 요약은 https://youtu.be/Lpieg1zrKdg 다음 영상을 보고 요약한 개념입니다. 여러 개의 루틴을 동시에 실행하여 결과를 내고 싶다면 비동기 처리를 지원하는 코루틴을 사용한다. 코루틴은 메인이 되는 루틴과 별도로 진행이 가능한 루틴으로 코루틴은 개발자가 실행과 종료를 마음대로 제어할 수 있는 단위이다. 코루틴은 제어 범위와 실행 범위를 지정할 수 있다. 코루틴의 Scope GlobalScope 프로그램 어디서나 제어, 동작이 가능한 기본 범위 CoroutineScope 특정한 목적의 Dispatcher를 지정하여 제어 및 동작이 가능한 범위 Coroutine의 dispatcher Dispatcher.Default : 기본적인 백그라운드에서 동작 Dispatcher.IO : 네트워크나 ..
본 포스팅의 내용은 [깡샘의 코틀린 프로그래밍]을 공부하고 작성자가 생각을 정리하기 위해서 작성한 글이므로 더욱 자세한 내용을 알고 싶으신 분은 [깡샘의 코틀린 프로그래밍]을 강력 추천합니다!! 1. Null 안정성 Null 이란 null은 아무 값도 대입하지 않은 상태를 말하며 특히 객체는 흔히 참조 변수라고 표현해서 실제 객체에 데이터가 대입된 게 아니라 데이터를 가지는 메모리의 주소 값이 저장된 변수이다. Null Pointer Exception이란 Null은 메모리 할당이 이루어지지 않은 상태를 표현하기 위한 용도이지만 개발 때는 참 귀찮은 존재이다. Null을 처음 고안한 사람조차도 Null을 만든게 큰 실수라고 말할 정도.. Null 상태의 변수는 할당된 메모리가 없기 때문에 변수에 접근을 시..
본 포스팅의 내용은 [깡샘의 코틀린 프로그래밍]을 공부하고 작성자가 생각을 정리하기 위해서 작성한 글이므로 더욱 자세한 내용을 알고 싶으신 분은 [깡샘의 코틀린 프로그래밍]을 강력 추천합니다!! 4. 요소 함수 4.1. contains() contains() 함수는 컬렉션 타입의 데이터 중 특정 데이터가 있는지를 판단하는 함수이다. listOf(2, 5, 10, 8).contains(10) // true listOf(2, 5, 10, 8).contains(7) // false 4. 2. elementAt(), elementAtOrElse(), elementAtOrNull() elementAt() 특정 위치(인덱스)의 데이터를 추출한다. 리스트의 범위를 벗어나는 인덱스를 입력하였을 경우, IndexOutO..
본 포스팅의 내용은 [깡샘의 코틀린 프로그래밍]을 공부하고 작성자가 생각을 정리하기 위해서 작성한 글이므로 더욱 자세한 내용을 알고 싶으신 분은 [깡샘의 코틀린 프로그래밍]을 강력 추천합니다!! 필터링 함수는 컬렉션 타입의 데이터 중 조건에 맞는 일부분의 데이터를 추출하는 함수다. 2. 필터링 함수 2.1. filter() filter() 함수는 컬렉션 타입의 데이터 중 특정 조건에 맞는 데이터만 추출할 때 이용한다. val resultList = listOf(1, 2, 3, 4, 5, 6, 7).filter { it > 4 } // [5, 6, 7] 2. 2. filterNot(), filterNotNull() filterNot() filter() 함수의 반대라고 생각하면 되겟다. 람다 함수에 명시된 ..
본 포스팅의 내용은 [깡샘의 코틀린 프로그래밍]을 공부하고 작성자가 생각을 정리하기 위해서 작성한 글이므로 더욱 자세한 내용을 알고 싶으신 분은 [깡샘의 코틀린 프로그래밍]을 강력 추천합니다!! 컬렉션 타입의 데이터를 활용하는 데 있어서 도움이 되는 함수가 많아 보여서 정리해보려고 한다. 1. 집합 연산 함수 1. 1. forEach(), forEachIndexed() forEach() 단순히 컬렉션 타입의 데이터 개수만큼 특정 구문을 반복 실행할 때 유용하다. listOf(1, 2, 3).forEach { println(it) } forEachIndexed() forEach 함수와 크게 다르지 않으며 index 값도 함께 활용하고 싶을 때 유용하다. listOf(1, 2, 3).forEach { ind..
본 포스팅의 내용은 [깡샘의 코틀린 프로그래밍]을 공부하고 작성자가 생각을 정리하기 위해서 작성한 글이므로 더욱 자세한 내용을 알고 싶으신 분은 [깡샘의 코틀린 프로그래밍]을 강력 추천합니다!! 코틀린 코드를 접할 때 생소한 코드가 정말 많았지만 그 중에서도 가장 눈에 띄던 것은 run( )이나 apply( ), let( )과 같은 익숙한 영어 단어로 되어 있는 함수들이 독특한 형태로 사용되고 있는게 신기해보였다. (지금와서야 알게 된건 이런 함수들이 고차함수였다는 사실...) 지금은 어떻게 사용되는지 알게 되었지만 아직 익숙하다고 말할수는 없으니 한 번 정리해보도록 하자. 1. run( ) run( ) 함수는 두 가지 형태로 사용된다. 단순히 람다 함수를 실행하고 그 결괏값을 얻는 목적으로 사용 객체의..
본 포스팅의 내용은 [깡샘의 코틀린 프로그래밍]을 공부하고 작성자가 생각을 정리하기 위해서 작성한 글이므로 더욱 자세한 내용을 알고 싶으신 분은 [깡샘의 코틀린 프로그래밍]을 강력 추천합니다!! Object 클래스 0. 왜 굳이 익명 클래스를 정의할 필요가 있을까? 익명 클래스는 말 그대로 이름이 없는 클래스를 말한다. 근데 어떤 클래스를 선언하기는 해야 하는데 이 클래스의 객체를 여러 개 생성하지 않고 딱 한 번만 생성한다면 이름을 짓기가 귀찮기도 하고 코드를 지저분하게 만들 수 있기 때문이다. 이럴 때 이름 없는 클래스를 선언하고 바로 생성해서 이용한다. 1. obejct를 이용한 익명 내부 클래스 정의 object 예약어는 익명 클래스를 정의할 때 사용한다. 클래스 선언 때 class 예약어를 작성..