Inline 코틀린에서 higher-order function에 사용되는 lambda 표현식은 새로운 함수객체를 생성하게 된다. 일상적으로 사용되는 lambda 표현식이 매우 간단한 형태임을 생각하면, 매번 사용시 객체를 생성하고 메모리를 할당하는게 상당한 오버헤드임을 알 수 있다. 이러한 오버헤드를 없애기 위해, 함수객체를 생성하지 않고 함수안의 코드를 직접 넣어주도록 하는 키워드가 ‘inline’이다. 간단한 코드를 가지고 확인해보자. lambda 함수를 인자로 갖는 간단한 higher-order function을…
[카테고리:] 코틀린
Kotlin 관련 메모
Android: “No type arguments expected for …”
Android 개발중에 “No type arguments expected for …” 란 에러메세지를 만난다면 아마도 다른 패키지를 import하고 있을 것이다. 예를들어 나같은 경우, RecyclerView에 ListAdapter를 사용하는데 위 에러가 떴고, 조금 헤맨후에 다음이 잘못 됐음을 알았다. RecyclerView의 경우, gerneric 인자 개수가 다르게 사용된다. 올바른 import는 다음과 같다. 이런 간단한 기록에 블로그 포스팅을 해야하나 살짝 고민했는데, 삽질의 기록은 여기 남기는게…
DB relationship with Room
앞서 DB relationship 에 대해 SQLite로 알아보았다. one to one, one to many, many to many relationship에 대해선 이전글을 참고하고, 동일한 내용을 Room에서 구현해보자. Room 적용시 꼭 직접 테스트 하길 바란다. 처음 사용해보면서 SQL을 사용하는 것보다 오히려 혼란스러운 점도 많았다. 예를들어, api level 24 인 android 7.0 에뮬레이터에선 테이블 생성이 안된건지 그런 테이블이 없다며 오류를…
DB relationship with SQLite
Room에대해 정리하다가, DB의 실사용시 만나게 되는 one to one, one to many, many to many relationship을 어떻게 다루는지 별도로 정리하려고 이 글을 쓴다. SQL문과 Room을 비교해보면 이해가 쉽고 빠를거 같아서 그렇게 정리하려다가 android developer 블로그에 이미 정리된걸 발견했다. 아마도 여기서 크게 벗어나지 않을 것인데, 내용상 SQLite에서 사용하는 것만 먼저 정리해 올린다. Room을 이용하는건 별도 포스팅으로…
템플릿같은 초기 안드로이드 프로젝트 설정
로그를 위한 Timber나 Architecture component들처럼 기본적으로 사용하는 것들이 Android Studio로 생성한 프로젝트에는 없다. 나만의 템플릿을 만들어놓고 사용하고 싶지만, 방법은 모르겠으니 기본적인 프로젝트 셋팅을 해놓고 이걸 복사해서 새 프로젝트에 써야겠다고 생각했다…만, 실제로 해보니 이것역시 프로젝트 파일들에서 프로젝트 이름, 패키지 이름등을 찾아 변경해줘야한다. 이 부분은 자동화 할 수 있지 않을까 생각은 드는데, 아직까지는 뭐가 더 간편할지 모르겠다….