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

この記事からわかること

  • Android Studio/Kotlin可変長引数使い方
  • vararg修飾子とは?
  • 配列渡す方法
  • *記号とは?

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

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
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index