본문 바로가기
반응형

[Android]/[Kotlin]15

코틀린 심화문법 - 람다, 고차함수 코틀린 심화문법에서 이미 설명하긴 했지만, 설명이 난해했던 것 같아서 추가로 작성한다. 람다 함수 - 익명 함수 정의 기법 - 반환값은 본문의 마지막 표현식 { 매개변수 -> 함수 본문 } 일반함수 fun sum(no1: Int, no2: Int): Int { return no1 + no2 } 람다함수 { no1: Int, no2: Int -> no1 + no2 } 람다함수는 fun 키워드도 없고 함수 이름도 없다. 람다함수는 이름이 없으므로 함수명으로 호출할 수 없다. 보통은 그래서 변수에 대입해 사용한다. val sum = { no1: Int, no2: Int -> no1 + no2 } sum(10, 20) 하지만 꼭 변수에 대입할 필욘 없다. { no1: Int, no2: Int -> no1 + n.. 2023. 1. 12.
람다 활용 개념 / 람다 팁 / 리스너 구현 RatingBar의 리스너 ( OnRatingBarChangeListener ) interface OnRatingBarChangeListener { abstract fun onRatingChanged( ratingBar: RatingBar!, rating: Float, fromUser: Boolean ): Unit } 이렇게 구현체가 하나의 메서드만 override 하면 되는 경우 람다를 이용하여 간단하게 구현하여 사용할 수 있다. binding.ratingBar.setOnRatingBarChangeListener { ratingBar, rating, fromUser -> } 또한 만약에 구현해야하는 메서드의 인자까지 하나라면, 람다에서는 인자 표현 생략도 가능하고, 해당 인자를 it으로 참조하면 된다... 2023. 1. 12.
코틀린 심화문법 - 스코프 함수 스코프 함수에는 run, with, apply, also, let이 있다. run - 스코프 함수 내에서, 호출한 대상을 this로 사용할 수 있다 - 마지막 실행 코드를 반환한다 var list = mutableListOf("Scope", "Function") // 호출 대상을, 스코프 함수 내에서 this로 사용가능 val sz = list.run { val listSize = this.size // this == list println("Length of List : ${listSize}") listSize // 마지막 실행 코드를 반환함 } println("Length of List : ${sz}") ------------------ OUTPUT : Length of List : 2 Length .. 2023. 1. 11.
코틀린 심화문법 - 지연 초기화 코틀린은 지연 초기화를 사용한다. class에서 변수를 초기화하면, 클래스 생성 시 해당 변수도 함께 생성되며 초기화된다. 그렇게 되면 클래스 객체를 생성할 때마다 해당 변수도 함께 초기화되기 때문에 바로 사용할 수 있다는 장점이 있다. 하지만 해당 변수를 바로 사용하지 않거나 꼭 사용하는 경우가 아니라면 클래스를 생성할 때마다 변수를 초기화하기 때문에 메모리나 소프트웨어의 실행 시간 측면에서 손해를 많이 보게 될 것! 초기화를 최대한 미루어서 메모리나 실행 시간에서 이득을 보기 위해 사용한다는 것이다. 지연 초기화에는 두 가지 방법이 있다. lateinit - var 에만 사용이 가능 - null은 허용되지 않음 - primitive type은 사용 불가능 - 초기화 되었는지 체크를 사용한다 class.. 2023. 1. 11.
반응형