코틀린13 코틀린 확장함수 Scope함수 apply, with, let, also, run 이란? Scope함수 apply, with, let, also, run 사용방법 각 Scope 함수들의 내부 모습(apply와 with 차이도 설명) 사용 및 응용 예시 Scope 함수를 사용할 때 주의 사항 HTML 삽입 미리보기할 수 없는 소스 표준 확장함수들(Scope 함수)의 내부 모습 inline fun with(receiver: T, block: T.() -> R): R { return receiver.block() } inline fun T.also(block: (T) -> Unit): T { block(this) return this } inline fun T.apply(block: T.() -> Unit): T { block() return this } inline fun T.let(block:.. 2023. 1. 16. 안드로이드 코틀린은 같은 변수를 계속 만들면 재활용할까? 코틀린은 같은 변수를 계속 만들면 재활용할까? 함수를 호출할 때 마다 변수를 생성하는 함수를 생성한다 함수를 계속 호출하면서 생성되는 변수의 메모리 주소 값을 확인한다 주소값을 통해 같은 변수를 만들 때 재활용하는지 새롭게 주소를 할당하는지 확인한다 HTML 삽입 미리보기할 수 없는 소스 테스트용 코드 작성 기본적으로 코틀린은 C와 같이 포인터가 없기 때문에 변수가 저장된 주소값을 얻을 수 없습니다.... 하지만, 컬렉션의 경우에는 주소값을 출력할 수 있기 때문에 아래의 예시와 같이 버튼을 클릭할 때마다 변수(리스트)를 생성하도록 한다 binding.freeButton.setOnSingleClickListener { val testValue = listOf(0, 1, 2) Timber.d("clicked.. 2023. 1. 8. 코틀린 inline 클래스 와 함수의 정의 및 사용하는 이유, 경우 인라인(inline) 코드란? 본래라면 컴파일 시 별도의 함수 or 클래스로 만들어져야하는 것을 호출하는 본문 안에서 정의하도록 한 것 인라인 클래스는 주로 Wrapping Class를 만들 때 사용한다 Boxing 과정이 빈번하게 이뤄지면 인라인 클래스를 사용하는 의미가 없어진다 HTML 삽입 미리보기할 수 없는 소스 인라인 코드는 무엇인가? 본래라면 컴파일 시 별도의 함수 or 클래스로 만들어져야하는 것을 호출하는 본문 안에서 정의하도록 한 것이다. 인라인 일때와 아닐 때 코드 비교 인라인을 사용하지 않고 정의한 함수를 호출 fun fn(n1: Int, n2: Int): Int { return n1 + n2 } fun main() { val result = fn(1, 2) println(result).. 2023. 1. 7. 리사이클러뷰의 생명주기 분석 및 메모릭의 원인 리사이클러뷰의 라이프 사이클 (화면에 보여지기까지의 순서) onAttachedToRecyclerView - 리사이클러뷰를 화면에 붙임 onCreateViewHolder - 홀더를 생성 onBindViewHolder - 홀더와 뷰를 바인딩 onViewAttachedToWindow - 홀더가 화면에 온전히 보여짐 onViewDetachedFromWindow - 홀더가 화면에 보여지지 않음 onViewRecycled - 재사용할 홀더 가져오기 onDetachedFromRecyclerView - 리사이클러뷰를 화면에서 떼냄 HTML 삽입 미리보기할 수 없는 소스 작성한 RecyclerView의 코드 TestAdapter.kt class TestAdapter: RecyclerView.Adapter() { priv.. 2023. 1. 5. 이전 1 2 3 4 다음