English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Kotlin デフォルトおよび名前付きパラメータ

この記事では、サンプルを通じてデフォルトパラメータと名前付きパラメータについて学びます。

サンプル:Kotlin デフォルトパラメータ

Kotlinでは、関数の定義内でパラメータにデフォルト値を提供することができます。

パラメータを渡して関数を呼び出す場合、渡されたパラメータを使用します。しかし、パラメータを渡さずに関数を呼び出す場合、デフォルトパラメータを使用します。

デフォルトパラメータはどのように動作しますか?

一:全てのパラメータを渡している場合

foo()関数には二つのパラメータがあります。パラメータにはデフォルト値が提供されていますが、foo()は上記のプログラムで二つのパラメータを渡して呼び出されます。したがって、デフォルトパラメータは使用されません。

foo()関数では、letterとnumberの値は'x' と 2。

二:全てのパラメータを渡していないが、一つのパラメータを渡している場合

ここでは、foo()関数に一つだけ(一番目の)パラメータが渡されます。したがって、一番目のパラメータは関数に渡された値を使用しますが、二番目のパラメータのnumberはデフォルト値を使用します。なぜなら、関数呼び出し中に二番目のパラメータが渡されていないからです。

foo()関数では、letterとnumberの値は 'y' と 15。

三:何のパラメータも渡していない場合

ここでは、foo()関数に何のパラメータも渡さずに呼び出します。したがって、これらの二つのパラメータはデフォルト値を使用します。

foo()関数では、letterとnumberの値は 'a' と 15。

サンプル:Kotlin デフォルトパラメータ

fun displayBorder(character: Char = '=', length: Int = 15) {
    for (i in 1..length) {
        print(character)
    }
}
fun main(args: Array<String>) {
    println("パラメータを渡していない場合のoutput:")
    displayBorder()
    println("\n\n"*「 」を一番目のパラメータとして使用します。")
    println("一番目のパラメータを渡した場合のoutput:")
    displayBorder('*)
    println("\n\n"*「 」を一番目のパラメータとして使用します。")
    println("5二番目のパラメータとして使用します。")
    println("同時に二つのパラメータを渡した場合のoutput:")
    displayBorder('* 5)
}

プログラムを実行すると、出力は以下のようになります:

パラメータを渡していない場合のoutput:
===============
*「 」を一番目のパラメータとして。
一番目のパラメータを渡した場合の输出:
***************
*「 」を一番目のパラメータとして。
5二番目のパラメータとして。
同時に二つのパラメータを渡した場合の输出:
*****

サンプル:Kotlin 名前付きパラメータ

名前付きパラメータについて説明する前に、上記のコードにいくつかの修正を行ってみましょう:

fun displayBorder(character: Char = '=', length: Int = 15) {
    for (i in 1..length) {
        print(character)
    }
}
fun main(args: Array<String>) {
    displayBorder(5)
}

ここでは、displayBorder()関数に二番目のパラメータを渡し、一番目のパラメータにはデフォルトパラメータを使用しようと試みますが、このコードは使用エラーを返します。これは、コンパイラが文字(Char型)に5(Int値)。

このような状況を解決するために、名前付きパラメータを使用することができます。方法は以下の通りです:

サンプル:Kotlin 名前付きパラメータ

fun displayBorder(character: Char = '=', length: Int = 15) {
    for (i in 1..length) {
        print(character)
    }
}
fun main(args: Array<String>) {
    displayBorder(length = 5)
}

プログラムを実行すると、出力は以下のようになります:

=====

上記のプログラムでは、名前付き引数(length = 5)を使用して、length関数の定義における引数にこの値を使用する(引数の位置に関係ありません)。

最初の引数の文字がプログラムのデフォルト値を使用する'='を使用します。