English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
この記事では、サンプルを通じてデフォルトパラメータと名前付きパラメータについて学びます。
Kotlinでは、関数の定義内でパラメータにデフォルト値を提供することができます。
パラメータを渡して関数を呼び出す場合、渡されたパラメータを使用します。しかし、パラメータを渡さずに関数を呼び出す場合、デフォルトパラメータを使用します。
foo()関数には二つのパラメータがあります。パラメータにはデフォルト値が提供されていますが、foo()は上記のプログラムで二つのパラメータを渡して呼び出されます。したがって、デフォルトパラメータは使用されません。
foo()関数では、letterとnumberの値は'x' と 2。
二:全てのパラメータを渡していないが、一つのパラメータを渡している場合
ここでは、foo()関数に一つだけ(一番目の)パラメータが渡されます。したがって、一番目のパラメータは関数に渡された値を使用しますが、二番目のパラメータのnumberはデフォルト値を使用します。なぜなら、関数呼び出し中に二番目のパラメータが渡されていないからです。
foo()関数では、letterとnumberの値は 'y' と 15。
ここでは、foo()関数に何のパラメータも渡さずに呼び出します。したがって、これらの二つのパラメータはデフォルト値を使用します。
foo()関数では、letterとnumberの値は 'a' と 15。
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二番目のパラメータとして。 同時に二つのパラメータを渡した場合の输出: *****
名前付きパラメータについて説明する前に、上記のコードにいくつかの修正を行ってみましょう:
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値)。
このような状況を解決するために、名前付きパラメータを使用することができます。方法は以下の通りです:
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関数の定義における引数にこの値を使用する(引数の位置に関係ありません)。
最初の引数の文字がプログラムのデフォルト値を使用する'='を使用します。