728x90
반응형
✅ 컬렉션 처리 : 가변 길이 인자, 중위 함수 호출, 라이브러리 지원
📌 자바 컬렉션 API 확장
- 코틀린 컬렉션은 자바와 같은 클래스를 사용하지만 더 확장된 API를 제공
- last와 max등이 모두 확장 함수로 정의 되어있음
- 코틀린 표준 라이브러리는 수많은 확장 함수를 포함하기 때문에 모두 다 알 필요는 없을 뿐더러, 사용을 원하는 경우 IDE의 코드 완성 기능을 통해 메소드나 함수를 찾아 살펴보며 사용할 수 있음
- IDE가 표시해주는 목록에서 원하는 함수만 선택하면 됨
📌 가변 인자 함수 : 인자의 개수가 달라질 수 있는 함수 정의
- 가변 길이 인자(Varargs)는 메서드를 호출할 때 원하는 개수만큼 값을 인자로 넘기면 자바 컴파일러가 배열에 그 값들을 넣어주는 기능
- 코틀린의 가변 길이 인자도 자바와 비슷하지만 문법이 조금 다름
- 타입 뒤에 ...를 붙이는 대신 코틀린에서는 파라미터 앞에 vararg 변경자를 붙임
var list = listOf(2, 3, 5, 7, 11)
fun listOf<T> (vararg values: T) : List<T> { ... }
- 이미 배열에 들어있는 원소를 가변 길이 인자로 넘길 때도 코틀린과 자바 구문이 다름
- 자바에서는 배열을 그냥 넘기면 되지만 코틀린에서는 배열을 명시적으로 풀어서 배열의 각 원소가 인자로 전달되게 해야함
- 기술적으로는 스프레드 연산자(Spread)가 그런 작업을 해줌
fun main(args: Array<String>) {
val list = listOf("args: ", *args) // 스프레드 연산자가 배열의 내용을 펼쳐줌
println(list)
}
📌 값의 쌍 다루기 : 중위 호출과 구조 분해 선언
- 맵을 만들기 위해서는 mapOf 함수를 사용
val map = mapOf(1 to "one", 7 to "seven", 53 to "fifty-three")
- 여기서 to라는 단어는 코틀린 키워드가 아님
- 이 코드는 중위 호출(infix call)이라는 특별한 방식으로 to라는 일반 메서드를 호출한 것
- 중위 호출 : 변수와 변수 사이에 함수를 넣고 호출하여 연산자처럼 사용하는 것
- 중위 호출 시에는 수신 객체와 유일한 메서드 인자 사이에 메서드 이름을 넣음
- 객체, 메서드 이름, 유일한 인자 사이에는 공백이 들어가야 함
1.to("one") // "to" 메서드를 일반적인 방식으로 호출함
1 to "one" // "to" 메서드를 중위 호출 방식으로 호출함
- 함수(메서드)를 중위 호출에 사용하게 허용하고 싶은 경우 infix 변경자를 함수 선언 앞에 추가해야 함
infix fun Any.to(other: Any) = Pair(this, other)
- 이 to 함수는 Pair의 인스턴스를 반환
- Pair는 코틀린 표준 라이브러리 클래스로, 이름대로 두 원소로 이뤄진 순서쌍을 표현함
- Pair의 내용으로 두 변수를 즉시 초기화할 수 있으며 이런 기능을 구조 분해 선언(Destructuring Declaration)이라고 함
- Pair 인스턴스 외 다른 객체에도 구조 분해를 적용할 수 있음
- key와 value라는 두 변수를 맵의 원소를 사용해 초기화
for ((index, element) in collection.withIndex()) {
println("$index : $element") // 구조 분해 선언을 통한 index와 element이 값을 한 번에 초기화
}
728x90
반응형
'Studying > Kotlin' 카테고리의 다른 글
[Kotlin In Action] 3장. 함수 정의와 호출(5) - 로컬 함수와 확장 (0) | 2023.05.08 |
---|---|
[Kotlin In Action] 3장. 함수 정의와 호출(4) - 문자열과 정규식 다루기 (0) | 2023.05.08 |
[Kotlin In Action] 3장. 함수 정의와 호출(2) - 확장 함수와 확장 프로퍼티 (0) | 2023.05.02 |
[Kotlin In Action] 3장. 함수 정의와 호출(1) - 컬렉션과 함수 만들기 (0) | 2023.05.02 |
[Kotlin In Action] 2장. 코틀린 기초(4) - 코틀린의 예외 처리 (0) | 2023.04.24 |