코틀린 컬렉션 처리
이 글은 Kotlin in Action 서적을 참고했습니다!
1. 가변 인자 함수 : 인자의 개수가 달라질 수 있는 함수 정의
리스트를 생성하는 함수를 호출할 때 ex(listOf, arrayListOf(), 등등) 원하는 만큼 원소를 전달할 수 있다.
var list = listOf(1, 2, 3, 4, 5, 6, 7)
listOf() 함수로 들어가보면 다음과 같다.
fun <T> listOf(vararg elements: T): List<T>
vararg << 가변길이인자
메소드를 호출할 때, 원하는 개수만큼 값을 인자로 넘기면 자바 컴파일러가 배열에 그 값들을 넣어주는 기능이다!
코틀린에서는 파라미터 앞에 vararg변경자를 붙인다.
함수에 가변길이 인자 변경자 vararg가 있다면, 스프레드 연산자(*)를 통하여 배열의 내용을 펼쳐진 채로 보내줘야한다!
fun main(args : Array<String>)
val list = lisOf("args : ", *args) // * << 스프레드 연산자
만약 vararg 파라미터가 제네릭 타입일 경우, *을 생략해도 Array<out T> 타입은 인자로 받아들일 수 있다.
val test = arrayOf(1, 2, 3, 4)
val test2 = arrayOf(*test) // 가능
val test3 = arrayOf(test) // 가능
값의 쌍 다루기 : 중위 호출과 구조 분해 선언
val map = mapOf(1 to "one", 7 to "seven", 53 to "fifty-three")
여기서 to라는 단어는 코틀린 키워드가 아니다. 중위 호출(infix call)이라는 특별한 방식으로 to라는 메소드를 호출한 것이다!
1.to("one")
1 to "one"
-> 동일한 결과
중위 호출 시, 수신 객체와 메소드 인자 사이에 메소드 이름을 넣는다
-> 1(수신 객체) to(메소드 이름) "one"(메소드 인자)
인자가 하나뿐인 함수 혹은 하나뿐인 확장 함수에 중위 호출을 사용할 수 있다! infix 변경자를 함수 선언 앞에 추가해주면 된다.
infix fun Any.to(other : Any) = Pair(this, ohter)
-> to 함수의 정의
to 함수는 Pair의 인스턴스를 반환하는데, 이는 두 원소로 이뤄진 순서쌍을 표현한다.
val (number, name) = 1 to "jiwon"
-> 이러한 기능이 구조 분해 선언, 두 변수 즉시 초기화 가능!
-> Log.d("number : ", $number) // 1
-> Log.d("name : ", name) // jiwon
구조 분해가 작동하는 과정
to함수의 반환값이 Pair여서 순서쌍을 만든 후, 구조 분해를 통해 순서쌍을 푼다!
Author And Source
이 문제에 관하여(코틀린 컬렉션 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@g_one212/코틀린-컬렉션-처리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)