본문 바로가기

Language/Kotlin

(7)
코루틴 코루틴은 왜 만들어졌을까? 코루틴을 알아보기에 앞서 코루틴이 왜 만들어졌는지 찾아보았다. 다음 영상은 꼭 보는 것을 추천한다. https://www.youtube.com/watch?v=BOHK_w09pVA 구글 I/O 위 영상을 보면 코루틴은 Dream Code를 위해 만들어진 라이브러리라고 한다. 여기서 Dream Code는 다음과 같다. val user = fetchUserData() textView.text = user.name fetchUserData 함수는 HttpConnection이나 Retrofit으로 서버 api를 조회해 유저 데이터를 받아오는 것을 뜻한다. 안드로이드에서는 메인쓰레드로 서버 api를 조회할 수 없기 때문에 이 코드가 정상적으로 동작하지 않는다. 또한 메인쓰레드에서 Http..
코틀린 Data Class 코틀린에는 자바엔 없는 DataClass라는 것이 있다. 여태 자바처럼 짜는 것에 익숙해져서 공부 안하고 있다가 깊은 복사와 해체 기능을 손쉽게 사용할 수 있다는 점을 알고 정리를 해놓으려고 한다. 말이 필요없다 코드 ㄱㄱ 1. 해체 fun main(args: Array) { val arrData = mutableListOf() var vo = Data() vo.indx = 1 vo.name = "김비서" arrData.add(vo) vo = Data() vo.indx = 2 vo.name = "박비서" arrData.add(vo) arrData.forEachIndexed { _, data -> val (indx, name) = data println("$indx , $name") } } data cla..
코틀린 split 신기함 자바에서는 split 함수로 자르고 리스트에 담고 등등 너무 귀찮았는데 코틀린에서는 엄청 간편하게 자를 수 있게 만들어 놨다...ㅋㅋㅋ val test = "하하, 호호, 헤헤" val (haha, hoho, hehe) = test.replace(" ", "").split(',') println(haha) println(hoho) println(hehe) 출력: 하하 호호 헤헤 val에서 선언한 변수중 필요없는 변수는 해체할 수 있다. val test = "하하, 호호, 헤헤" val (haha, _, hehe) = test.replace(" ", "").split(',') println(haha) println(hehe) 출력: 하하 헤헤
코틀린 리스트 (MutableList, List) 코틀린에서는 읽기 전용 변수(val)와 수정할 수 있는 변수(var)처럼 리스트도 읽기 전용 리스트(list), 수정할 수 있는 리스트(mutable)이 있다. 읽기 전용 리스트는 말 그대로 리스트를 선언할 때 넣은 데이터들을 수정, 삭제, 변경할 수 없다는 의미이다. 따라서 데이터를 읽을 수는 있지만 add, remove 함수를 사용할 경우 컴파일에러가 발생한다. var arrList = listOf("호호", "하하", "헤헤") println(arrList[0]) // O arrList.add("키키") // X 컴파일에러 arrList.remove(1) // X 컴파일에러 반대로 수정할 수 있는 리스트는 기존 자바에서 사용하던 ArrayList와 유사하므로 ArrayList의 함수들을 모두 사용할..
코틀린 표준함수(apply, let, run, with, also, takeIf) 이 포스팅은 빅 너드 랜치의 코틀린 프로그래밍 책을 공부하면서 요약한 내용이다. 코틀린의 표준 함수는 내부적으로 확장함수이며 확장함수를 실행하는 주체를 수신자 또는 수신자 객체라고 한다. 따라서 확장 함수가 호출될 때 수신자 객체의 참조가 확장 함수로 전달된다. 1. apply apply 함수는 구성함수로서 우리가 사용할 객체를 구성할때 반복되는 코드의 양을 줄이기 위해 사용된다. // 일반코드 val f = File("abc.txt") f.setReadable(true) f.setWritable(true) // apply를 사용한다면? val f = File("abc.txt").apply { setReadable(true) setWritable(true) } apply 함수는 람다 내부의 모든 함수 호..
코틀린 Null (안전 호출 연산자, non-null 단언 연산자) 1. 안전 호출 연산자(?) var a = readLine()?.capitalize() 컴파일러가 readLine()? 함수에 접근했을 때 안전 호출 연산자가 있다면 자동적으로 null 값을 검사하는 코드가 실행이된다. 만약 readLine()의 값이 null이 아니면 뒤에 있는 capitalize() 함수를 실행시키고 null이라면 capitalize() 함수가 실행되지 않는다. 2. 단언 연산자 (!!) 단언 연산자는 null이 될 수 없다는 것을 단언하는 연산자다. var a = readLine()!!.capitailize() readLine()값이 null이 아니면 정상적으로 capitailize() 함수를 수행하고 null이면 런타임 시에 NullPoinerException 예외를 발생시킨다.
코틀린의 특징 코틀린은 기존의 자바와는 비슷하면서도 다음과 같은 코틀린의 특징을 가지고 있다. 1. 간결한 문법 - 문장 끝에 세미클론을 넣지 않아도 된다. - new 키워드를 쓰지 않고 객체를 생성한다. - 타입 추론을 지원하므로 일반적인 경우 타입을 적지 않아도 된다. 2. null 안전성 - 객체 타입의 변수에서 null 값의 허용 여부를 구분하지 않던 자바와 달리 코틀린은 허용 여부를 구분한다. 3. 가변/불변 구분 - null값의 허용 여부를 구분하는 것과 유사하게 코틀린에서는 변수 및 변수 내 할당된 값의 불변 여부를 구분한다. 변수의 불변 여부, 즉 최초 생성 시 할당된 값을 이후에도 변경할 수 있는지의 여부를 변수 키워드인 var와 val로 구분한다. - 값을 한 번 할당하고 나면 그 후에 변경할 수 없..