Kotlin 6

Kotlin Type aliases

공부를 하던중 typealiases 라는 키워드를 알게됐다. 코틀린에서 typealiases 는 긴 제너릭 타입을 사용하는 변수들에 대한 새로운 별명을 지어주는 키워드다.크게 엄청난 역할을 하는것은 아니고 짧게 별칭으로 쓸 수 있게 바꿔주는 용도 정도로 생각하면 좋을 거 같다. typealias DataBaseUseCase = BaseUseCase 이렇게 적어주면 class DatatUseCase @Inject constructor(private val repo: DataRepository) : BaseUseCase 이렇게 됐어야하는게 class DatatUseCase @Inject constructor(private val repo: DataRepository) : DataBaseUseCase 이런식으..

Kotlin 2022.07.10

lateinit 과 lazy의 차이점

lateinit과 lazy 는 늦은 초기화를 하게 해주는 키워드다. 늦은 초기화가 뭘까? 늦은 초기화는 선언과 동시에 값을 가져오기 곤란한 상황에 뒤에 이 변수를 초기화 해줄 수 있는 시점이 됐을 때 초기화를 하도록 미뤄주는 역할을 한다. 생각보다 쓸 일이 자주 생기는데 두가지 방법에는 차이가 있다. 먼저 lazy 에 대한 이야기다. 오늘 업무를 진행하다가 Dialog 와 관련된 작업을 할 일이 있었다. 순간 고민이 생겼는데 Dialog를 생성할때 중복되는 내용들을 baseDialog 로 만들어서 부모 클래스로 만들어뒀는데 여기서 높이와 넓이를 부모클래스에서 값을 받도록 하고 있어서 작업하려던 Dialog 에서 override 하고 있는 곳에 값을 넣어 줄 상황이 생겼다. 고정 값으로 값을 집어넣어주면 ..

Kotlin 2022.03.15

람다식에서 return 사용하기

코틀린은 함수형 프로그래밍을 지원하기 때문에 익명함수, 람다식을 사용할 경우가 흔하다. map, filter, reduce, forEach등 함수를 인자로 받는 함수들(고차함수)의 매개변수로 우리만의 로직이 담긴 함수를 넘길때 람다를 자주 사용한다. 자주 사용하는 만큼 꼭 집고 넘어가야할 사항이 있다. 일반 함수를 넘겼을 때 (return에 주목하자) 일반적으로 함수 내부의 return은 그 함수만 종료시킨다. 물론 코틀린의 label을 사용해서 종료시킬 함수를 지정할 수 있지만 그렇지 않은 경우 return문을 포함하는 가장 가까운 함수를 종료시키게 된다. 우선 람다식이 아니라 일반적인 익명 함수를 넣은 예시를 보자. fun exampleFunc() { var ints = listOf(0,1,2,3) ..

Kotlin 2021.05.02

Java Kotlin 차이점

Kotlin vs. Java 비교하기 Android 개발에 있어서 Java 언어보다 kotlin 언어를 많이 사용하는 추세입니다. 물론 아직도 Java를 많이 사용하고 있지만 구글에서도 Kotlin을 제 1언어로 채택하고 앞으로의 컴포넌트나 라이브러리들도 Kotlin으로 개발된다고 하니 안드로이드 개발자들은 Kotlin을 안 할 이유가 없어보입니다. 그래서 코드 사용에 있어서 Java와 Kotlin을 비교해보도록 하겠습니다. 비교 순서는 변수/상수, view 사용, Null 안정성, 객체 초기화, Data Class 순으로 알아보도록 하겠습니다. 1. 변수/상수 Java String strVar = ""; // 변수 final String strVal = ""; // 상수 - 변수 : final을 사용하..

Kotlin 2021.05.01

코틀린 커스텀 다이얼로그

1. 커스텀 다이얼로그(Custom Dialog)로 사용할 코틀린 클래스 만들기 먼저 커스텀 다이얼로그(Custom Dialog)가 될 코틀린 클래스를 아래처럼 만들어 줍니다. class CustomDialog(context: Context) { private val dialog = Dialog(context) fun myDig() { dialog.show() } } ① 파라미터로 액티비티의 Context 를 전달 받습니다. 다이얼로그(Dialog)가 어떤 액티비티에서 나와야하는지 알려줘야하기 때문이죠. ②, 다이얼로그(Dialog) 에 context 를 넘겨 줍니다. 이제 액티비티에서 이 다이얼로그(Dialog) 를 호출하기 위해서는 ③ 함수를 호출 하면 됩니다. 하지만 이 상태로는 화면엔 아무것도 나..

Kotlin 2021.04.25