【Kotlin】可変長引数(vararg)の使い方!*記号とは?

この記事からわかること
- Android Studio/Kotlinの可変長引数の使い方
- vararg修飾子とは?
- 配列を渡す方法
- *記号とは?
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
Kotlinの可変長引数とは?
Kotlinの言語仕様である可変長引数とはその名の通り引数の個数を可変的にすることができる仕組みのことです。これはJavaでもあった仕組みで関数の引数1つには本来1つの値が渡されますが、個数が変化しても柔軟に受けれるのが可変長引数の特徴です。
Kotlinでは引数にvararg
修飾子を付与することで可変長引数であることを定義します。
fun sum(vararg ints: Int): Int {
//
}
使い方
例えば可変長で受け取ったInt型の値を全て合計して返すメソッドを定義してみます。
fun sum(vararg ints: Int): Int {
print(ints::class.simpleName) // IntArray
var sum = 0
for (int in ints) {
sum += int
}
return sum
}
fun main() {
print(sum(1,2,4)) // 7
}
vararg
修飾子の付与された引数はクロージャーの中で渡された値を保持した配列として扱われます。データ型を調べてみるとIntArray
になっていることがわかります。
配列を引数に渡す
可変長になっている引数はクロージャー内で配列に変化しましたが、値を渡す際に配列を渡すとコンパイルエラーになります。
val array = intArrayOf(1,3,5)
print(sum(array)) // コンパイルエラー<
これを防ぐには*
記号を配列の前に付与します。
val array = intArrayOf(1,3,5)
print(sum(*array)) // OK
複数のvarargは持てない
1つの関数の中に可変長引数として設定できるのは1つまでです。複数のvarargを付与するとMultiple vararg-parameters are prohibited
というエラーが発生します。
fun sum(vararg ints: Int, vararg strs: String): Int {
// Multiple vararg-parameters are prohibited
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。