티스토리 뷰

4개의 글로 커니의 코틀린 2장, 3장 정리를 모두 마쳤다

오늘은 커니의 코틀린 4장 내용인,

개발을 할 때 유용하게 사용할 수 있는 코틀린 표준 라이브러리를 정리해보려고 한다!


조건 확인 함수

특정 값의 일치 여부 확인 : check, require

  • check(), require() : 함수 혹은 생성자의 인자로 받은 표현식이 참이 아닌 경우 예외를 발생시키는 함수
//인자로 받은 value 값이 참이 아니라면 IllegalStateException 발생
fun check(value: Boolean)
//인자로 받은 value 값이 참이 아니라면 IllegalArgumentException 발생
fun require(value: Boolean)

//인자로 받은 value 값이 참이 아니라면 IllegalStateException 발생시키며, lazyMessage로 넘겨진 함수 실행
fun check(value: Boolean, lazyMessage: () -> Any)
//인자로 받은 value 값이 참이 아니라면 IllegalArgumentException 발생시키며, lazyMessage로 넘겨진 함수 실행
fun require(value: Boolean, lazyMessage: () -> Any)
  • checkNotNull(), reqiuireNotNull() : 특정 값의 널 여부를 확인하고 널이 아닌 값을 반환받음
//value 값이 null이라면 IllegalStateExeption을 발생, null이 아닌 경우 값을 반환
fun <T: Any> checkNotNull(value: T?) : T
//value 값이 null이라면 IllegalArgumentExeption을 발생, null이 아닌 경우 값을 반환
fun <T: Any> requireNotNull(value: T?) : T

//value 값이 null이라면 IllegalStateExeption을 발생시키며 lazyMessage로 받은 함수 실행, null이 아닌 경우 값을 반환
fun <T: Any> checkNotNull(value: T?, lazyMessage: () -> Any) : T
//value 값이 null이라면 IllegalArgumentExeption을 발생시키며 lazyMessage로 받은 함수 실행, null이 아닌 경우 값을 반환
fun <T: Any> requireNotNull(value: T?, lazyMessage: () -> Any) : T
  • 사용 예시
//사용 예시
fun showMessage(isPrepared: Boolean, message: String){
	//인자로 받은 isPrepared 값이 true가 아니라면, IllegalStateExeption 발생
	check(isPrepared)
    	//값 msg에는 인자로 받은 message 값이 null이 아닐 때만 값 할당
    	val msg = requireNotNull(message)
    	//msg의 길이가 10 이상이 아니라면 IllegalArgumentExeption 발생
    	require(msg.length > 10)
}

명시적으로 실행 중단하기 : error, TODO

  • error() : 임의로 에러를 발생시켜 프로그램의 실행을 막는 함수
//인자로 받은 message와 함께 IllegalStateException 발생
fun error(message: String): Nothing

//사용 예시
fun showMessage(isPrepared: Boolean, message: String) {
	//인자로 받은 isPrepared가 거짓일 경우, IllegalStateException: Not prepared yet 예외 발생
    	if(!isPrepared) {
    		error("Not prepared yet")
    	}
    	println(message)
}
  • TODO() : 작업이 완료되지 않아 구현이 안된 부분에서 발생하는 버그를 방지하기 위한 함수
//NotImplementedError 예외를 발생시켜 이 부분이 아직 완성되지 않았음을 알려줌
fun TODO(): Nothing
//NotImplementedError 예외를 발생시켜 이 부분이 아직 완성되지 않았음을 알려주며,
//에러 메세지에 표시될 상세 내용을 reason 매개변수로 전달
fun TODO(reason: String): Nothing

//사용 예시
calss Car {
	//구현이 완료된 함수
	fun drive() {
    	...
    	}
    	//내부 구현이 아직 완료되지 않은 함수, 이 함수 호출 시 NotImplementedError() 발생
    	fun stop() {
    		TODO("Brake is not implement")
    	}
}

 


컬렉션 생성 함수

배열 (Array)

  • 생성 후 크기 변경 불가🚨
  • arrayOf() : 특정 원소를 담고 있는 배열 생성
  • emptyArrayOf() : 빈 배열 생성
  • arrayOfNulls() : 널 값을 포함할 수 있는 배열 생성, 배열 생성 후 값을 따로 채워넣을 수 있음
//함수의 인자로 받은 값으로 구성된 배열 반환, varag는 가변 인자
fun <T> arrayOf(varag elements: T): Array<T>
//특정 타입을 갖는 빈 배열 반환, 타입 추론이 불가능 하므로 타입을 반드시 명시
fun <T> arrayOf(): Array<T>
//배열 내 각 값들이 모두 널 값으로 초기화되어 있고, 인자로 받은 size만큼의 크기를 갖는 배열 반환, 타입 반드시 명시
fun <T> arrayOfNulls(size: Int): Array<T?>
  • 사용 예시
//인자로 전달된 문자열을 포함하는 배열 생성, 인자로 타입 추론 가능
val cities = arrayOf("Seoul", "Tokyo", "San Francisco")
//String 타입의 빈 배열 생성, 타입을 반드시 명시
val emptyStringArray = emptyArray<String>()
//크기가 3이고 null을 포함할 수 있는 배열 생성, 타입을 반드시 명시
val nullStoreableArray = arrayOfNulls<String>(3)

리스트 (List)

  • 데이터 중복 가능🚨
  • listOf() : 포함하는 요소를 읽을 수만 있고 수정할 수 없는 읽기 전용 리스트 생성
//인자로 받은 elements를 포함하는 읽기 전용 리스트 반환
fun <T> listOf(varag elements: T): List<T>
//인자로 받은 element 하나만을 요소로 갖는 읽기 전용 리스트 반환
fun <T> listOf(element: T): List<T>
//비어있는 읽기 전용 리스트 반환
fun <T> listOf(): List<T>
  • listOfNotNull() : 인자로 받는 값 중, 널 값은 무시하고 널이 아닌 값으로만 리스트 생성
//인자로 받은 elements 중 널이 아닌 값들로만 구성된 읽기 전용 리스트 반환
//인자로 전달된 모든 값이 null이라면 빈 리스트 반환
fun <T : Any> listOfNotNull(varag elements: T?): List<T>
//인자로 받은 element의 값이 널이 아닌 경우 이 요소 하나만을 갖는 리스트를 반환
//인자로 전달된 값이 null일 경우 빈 리스트 반환
fun <T : Any> listOFNotNull(element: T?): List<T>
  • mutableListOf() : 요소를 수정할 수 있는 리스트 생성
//인자로 받은 elements를 요소로 가지며 수정 가능한 리스트 반환
fun <T> mutableListOf(varag elements: T): MutableList<T>
//비어있는 수정 가능한 리스트 반환
fun <T> mutableListOf(): MutableList<T>
  • arrayListOf() : 크기 변경이 가능한 배열 생성, arrayOf()와 달리 add() 함수로 원소 추가 가능🚨
//인자로 받은 elements를 요소로 하는 ArrayList를 반환
fun <T> arrayListOf(varag elements: T): ArrayList<T>
//비어있는 ArrayList 반환
fun <T> arrayListOf(): ArrayList<T>
  • 사용 예시
//두 개의 원소를 가지는 읽기 전용 리스트 생성
val listOfCountries = listOf("Seoul", "Tokyo")
//null값인 인자는 무시하므로, "Seoul"과 "Tokyo"만을 원소로 가지는 리스트 생성
val listOfCountriesNotNull = listOfNotNull("Seoul", null, "Tokyo", null)

집합 (Set)

  • 데이터 중복 불가능🚨
  • setOf() : 포함하는 요소를 읽을 수만 있고, 수정할 수 없는 읽기 전용 집합 생성
//인자로 받은 elements들을 요소로 하는 읽기 전용 집합 반환
fun <T> setOf(vararg elements: T): Set<T>
//인자로 받은 element 하나만을 요소로 하는 읽기 전용 집합 반환
fun <T> setOf(element: T): Set<T>
//비어있는 읽기 전용 집합 반환
fun <T> setOf(): Set<T>
  • mutableSetOf() : 포함하는 요소를 수정할 수 있는 집합 생성
//인자로 받은 elements들을 요소로 하는 수정 가능한 집합 반환
fun <T> mutableSetOf(vararg elements: T): MutableSet<T>
//인자로 받은 element 하나만을 요소로 하는 수정 가능한 집합 반환
fun <T> mutableSetOf(element: T): MutableSet<T>

맵 (Map)

  • '키'는 중복 불가능, '값'은 중복 가능
  • mapOf() : 포함하는 요소를 읽을 수만 있고, 수정 불가능한 읽기 전용 맵 생성
//Pair 형태로 받은 인자들을 포함하는 읽기 전용 맵 반환
fun <K, V> mapOf(varag pairs: Pairs<K, V>): Map<K, V>
//인자로 받은 pair 하나만을 요소로 갖는 읽기 전용 맵 반환
fun <K, V> mapOf(pair: Pairs<K, V>): Map<K, V>
//비어있는 읽기 전용 맵 반환
fun <K, V> mapOf(): Map<K, V>
  • mutableMapOf() : 맵이 포함하고 있는 요소를 수정할 수 있는 맵 생성
//Pair 형태로 받은 인자들을 포함하는 수정 가능한 맵 반환
fun <K, V> mutableMapOf(varag pairs: Pair<K, V>): MutableMap<K, V>
//비어있는 수정 가능한 맵 반환
fun <K, V> mutableMapOf(): MutableMap<K, V>
  • 사용 예시 : ⭐️Pair를 만들 때 표준 라이브러리 내 함수인 to() 사용 가능⭐️
//Pair를 직접 사용
val cities1 = mapOf(Pair("SEO", "Seoul"), Pair("TOK", "Tokyo"))

//to()함수 사용
val cities2 = mapOf("SEO" to "Seoul", "TOK" to "Tokyo")
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함