코틀린 코루틴을 공부하며 정리한 글입니다.혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀사람들은 왜 코루틴을 사용하는 것일까? 이 글을 읽으면 그 이유에 대해 쉽게 이해할 수 있으며, 조금은 쉽게 코루틴을 이해할 수 있을 것이다. 이해를 위해 약간 극단적인 테스트를 진행해보자.🛠️ 개발 환경 및 테스트 환경테스트 환경은 코틀린 + 스프링 부트 단일 스레드로 환경에서 진행되며, 매 5초마다 서버에 요청을 보내고, 서버에서는 5.5초 뒤에 응답을 보내는 형태이다.kotlin : 1.9.24Spring Boot : 3.3.1dependencies { implementation("org.springframework.boot:spring-boot-starter-web") ..
작성된 코드는 모두 이해를 돕기위한, 간단한 예시일 뿐입니다.틀린 부분은 지적해주시면 감사드리겠습니다 😀변성(variance)이란?변성이란 타입간의 상관 타입의 관계를 의미한다.private interface Listprivate class ArrayList: Listprivate fun arrayListOf(vararg values: T) = ArrayList()fun main() { val list: List = ArrayList()}위 코드는 정상적으로 동작할까? 실제로 위 코드를 작성하면 Type mismatch 에러가 발생한다. ArrayList는 List의 구현체이고, Int 또한 Number의 하위 타입인데 왜 에러가 발생할까?fun main() { val..
Kotlin In Action을 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 코틀린의 원시 타입 코틀린은 원시 타입과 래퍼 타입을 따로 구분하지 않는다. 이들이 어떻게 원시 타입에 대한 래핑이 작동하는지 살펴보자. 1. 원시 타입 : Int, Boolean 등 자바는 int와 같은 원시 타입(primitive type)과 String과 같은 참조 타입(reference type)을 구분한다. 원시 타입에는 변수에 그 값이 직접 들어가지만, 참조 타입의 경우 메모리상의 객체 위치가 들어간다. 원시 타입은 효율적으로 저장하고, 전달할 수 있지만, 값에 대한 메소드를 호출하거나 컬렉션에 담을 수 없다. 때문에 이런 원시 타입을 래퍼 타입으로 감싸서 C..
Kotlin In Action을 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 널 가능성 널 가능성(nullability)은 NPE(Null Pointer Exception)을 피할 수 있게 돕기 위한 코틀린 타입 시스템의 특성이다. 널이 될 수 있는지 여부를 타입 시스템에 추가함으로써 컴파일러가 여러가지 오류를 컴파일 타임에 미리 감지해서 런 타임 시점에 발생할 수 있는 예외의 가능성을 줄여준다. 1. 널이 될 수 있는 타입 코틀린에서는 널이 될 수 있는 타입을 자바와 다르게 명시적으로 지원한다. int strLen(String s) { return s.length() } 위 코드에 null을 넘기면 길이를 가져오기 위해 s.을 하는 순간 NPE..
Kotlin In Action을 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 1. 지연 계산(lazy) 컬렉션 연산 컬렉션의 함수들은 결과를 즉시(eagerly) 생성한다. 즉, 컬렉션 함수를 연쇄할 경우 매 단계마다 계산 중간 결과를 새로운 컬렉션에 임시로 담는다는 말이다. people.map(Person::name).filter { it.startsWith("A") } map과 filter의 반환 타입을 보면 알 수 있듯, 위 코드는 2개의 리스트를 생성하고 있다. 만약 원소가 수백만 개가 되면 효율성이 많이 떨어질 것이다. 하지만 시퀀스(sequence)를 사용하면 중간 임시 컬렉션을 사용하지 않고도 컬렉션 연산을 연쇄할 수 있다. val ..
Kotlin In Action을 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 람다 식과 멤버 참조 람다 식(lambda expression) 또는 람다는 기본적으로 다른 함수에 넘길 수 있는 작은 코드 조각을 의미한다. 1. 람다 소개 : 코드 블록을 함수 인자로 넘기기 람다 식을 사용하면 함수를 선언할 필요가 없고, 코드 블록을 직접 함수의 인자로 전달할 수 있다. 람다의 등장 전에는 아래 코드와 같이 무명 내부 클래스를 이용했다. button.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { doSomething(); } }) 위 코드를 람..