[Kotlin] Scope function (let, run, with, apply, also) 정리

코틀린 표준 라이브러리는 객체 컨텍스트 내에서 코드 블럭을 실행하는 것이 유일한 목적인 함수들을 포함하고 있다. 이 함수들을 람다식을 이용해서 호출하면 일시적인 범위(scope)가 생성되는데, 이 범위 내에서는 이름이 없어도 객체에 접근할 수 있다. 이 함수들을 Scope Function(범위 지정 함수)이라 부르며, let, run, with, apply, also 5가지가 존재한다.

Function selection

자세히 보기

RecyclerView: Cannot call this method in a scroll callback.

Pagination 구현을 위해 리사이클러뷰에 OnScrollListener를 추가하여 마지막 아이템에 도달하면 프로그래스바가 포함된 아이템을 제거 후, notifyItemRemoved(position) 메서드를 통해 Adapter에 데이터의 변경을 알리는 코드를 작성하였다.

따로 에러가 발생하지는 않았지만 로그창에 스크롤 콜백에서 해당 메서드를 호출할 수 없다는 아래와 같은 메시지가 표시되었다.

자세히 보기

[Kotlin] 최상위 함수와 프로퍼티

최상위 함수

객체 지향 언어인 자바에서는 모든 코드를 클래스의 메소드로 작성해야 한다. 하지만 실제 코드를 작성하면 어느 한 클래스에 포함시키기 어려운 코드가 많이 생긴다. 중요한 객체는 하나뿐이지만 그 연산을 객체의 인스턴스 API에 추가해서 API를 너무 크게 만들고 싶지 않은 경우가 있다.

자세히 보기