티스토리 뷰
전개 연산자
전개 연산자는 배열 데이터를 단순 나열할 때 사용한다.
*A 의 의미 : A 배열의 데이터를 나열한다.
*기호는 흔히 곱하기 연산자이다. 그런데 Kotlin에서 * 기호는 곱하기 이외에 전개 연산자(Spread Operator)로도 사용된다. 전개 연산자는 배열값을 나열할 때 사용한다. 아래 예시 코드를 보자.
import java.util.Arrays.asList
fun main(args: Array<String>) {
val array = arrayOf(10, 20, 30)
val list = asList(1, 2, array[0], array[1], array[2], 100, 200)
list.forEach{print(it)}
}
위에서 배열의 크기는 3이므로 3개의 데이터를 직접 추가하였다. 하지만 데이터의 개수가 3개가 아니라 1000개라면 어떨까?
하다못해 30개라면 어떨까? 직접 다 넣을 수는 없지 않은가?
이를 해결하기 위해서는 전개 연산자를 활용하면 된다. 아래 코드를 보자.
import java.util.Arrays.asList
fun main(args: Array<String>) {
val array = arrayOf(10, 20, 30)
val list = asList(1, 2, *array, 100, 200)
list.forEach{print(it)}
}
전개 연산자를 사용자 정의 함수에 사용
그렇다면, 전개 연산자를 사용할수 있는 사용자 정의 함수를 만들려면 어떻게 해야할까? 아래 코드를 보자.
fun some(vararg a: String) {
val iterator = a.iterator()
while(iterator.hasNext()) {
println(iterator.next())
}
}
fun main() {
val array = arrayOf<String>("hello", "world")
some(*array)
}
위에 some이라는 메소드의 인자 중에 vararg라고 되어 있는 부분을 볼 수 있다. 이는 전개 연산자로 호출할 변수를 선언하는 부분이다.
vararg로 선언된 변수로만 전개 연산자를 사용하여 메소드를 호출할 수 있다.
전개 연산자를 List에 사용
배열에는 잘 되는 것을 알 수 있는데 이를 List에는 적용이 안되는지 궁금할 것이다. 역시 가능하다.
val list = listOf<String>("a", "b")
some(*list.toTypedArray())
'프로그래밍언어 > Kotlin' 카테고리의 다른 글
Kotlin 상속 (Kotlin Override) - 2 (0) | 2019.07.28 |
---|---|
Kotlin 상속 (Kotlin Override) - 1 (0) | 2019.07.28 |
Kotlin에 대한 궁금증? (작성중) (0) | 2019.07.07 |
Kotlin 연산자 재정의 (0) | 2019.07.07 |
Kotlin Singleton (0) | 2019.01.03 |
- Total
- Today
- Yesterday
- Apple Watch
- Kotlin
- CloudComputing
- 함수형
- XCode
- Rxjava
- 아이폰
- 컬렉션
- 알고리즘
- java
- 안드로이드
- 스위프트
- watchos
- Elliotable
- Swift
- Reactive programming
- ios
- Auto Layout
- retrofit
- 오토레이아웃
- 애플워치
- SwiftUI
- Notissu
- 함수형프로그래밍
- 코틀린
- android
- C++
- databinding
- 상속
- apple
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |