데이터 보관을 목적으로 만들어진 클래스로서 생성자 프로퍼티에 대한 toString, equals, hashCode, copy, compoenetsN 메소드를 자동으로 생성해준다. 기본 모양은 아래와 같다. class 키워드 앞에 data라는 키워드를 붙임으로써 사용할
코루틴은 콜백을 사용하지 않고 비동기 처리를 해 주는 장점을 가지고 있음이 때문에 비동기 처리를 코드 순서대로 실행시켜 가독성을 높이고 보다 심플한 코드를 작성하게 해준다.기존 라이브러리들이 비동기 처리를 콜백으로 지원하는 경우가 많다. 이럴경우 코루틴으로 처리하기가
코틀린 표준 라이브러리에 포함된 객체 컨텍스트내에서 실행가능한 함수들로서 람다 표현식으로 구성되며, 해당 람다식은 임시적인 스코프를 구성한다.기본적으로는 블록내의 코드를 실행한다는 동일한 동작을 하지만, 블록내에서 객체가 어떤 방식으로 진입되는지, 그리고 블록의 결과가
Retrofit은 HTTP API를 자바 api 형탤 사용할 수 있도록 하는 라이브러리로, kotlin에서는 코루틴과 엮여서 사용하게 된다. suspend 함수 형태로 선언하여 쉽게 사용할 수 있으나, 예외처리부분에서 약간의 귀차니즘이 생긴다. try-catch블록으로
문제 : 다른 클래스의 인스턴스가 포함된 클래스를 만들고, 그 클래스에 연산을 위임하고 싶다 \- 해법연산을 위임할 메소드가 포함된 인터페이스를 만들고, 클래스에서 해당 인터페이스를 구현한 다음, by카워드를 사용해 바깥쪽에 래퍼 클래스를 만든다 최신 객체지향 디자
문제 : 처음 접근이 일어나기 전에 값이 초기화되지 않았다면 예외를 던지고 싶다. \- 해답notNull함수를 이용해 값이 설정되지 않았다면 예외를 던지는 대리자를 제공한다 다음 코드는 구체적인 초기화 방법을 명시하지 않고 접근전에 초기화가 필요하게 만드는 코드이다
문제 : 여러 값이 들어있는 Map을 제공해 객체를 초기화 하고 싶다 \- 해법코틀린의 Map에는 대리자가 되는데 필요한 getValue, setValue함수 구현이 있다 객체 초기화에 필요한 값이 맵 안에 있다면, 해당 클래스 속성을 자동으로 맵에 위임할 수 있
컬렉션에서의 처리는 즉시 발생한다. 즉 컬렉션의 map이나 filter가 호출될 때 컬렉션의 모든 원소는 즉각 처리된다. 반면 시퀀스는 지연처리된다. 데이터를 처리하기 위해 시퀀스를 사용하면 각각의 원소는 자신의 다음 우너소가 처리되기 전에 전체 파이프라인을 완료한다.