【Kotlin】レッスン3-02:デフォルト引数とキーワード引数を理解しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:デフォルト引数とキーワード引数

この記事の練習問題を解くために必要な知識:
基礎文法、制御構造(レッスン1~2)関数の定義と呼出しデフォルト引数とキーワード引数関数の戻り値真偽値を返す関数関数のオーバーロードジェネリクスの基礎

<<前のページ Kotlin記事一覧 次のページ>>

Kotlinの「デフォルト引数とキーワード引数」とは

この章ではKotlinにおける「デフォルト引数とキーワード引数」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。




Kotlinでは関数を定義する際に「デフォルト引数」と「キーワード引数」を使うことで、コードをよりシンプルで柔軟にすることができます。

この記事ではこれらの機能について、初心者向けにわかりやすく解説します。

デフォルト引数とは?

デフォルト引数とは関数の引数にデフォルト値を設定する仕組みのことです。

関数を呼び出すときにその引数を省略すると、指定したデフォルト値が自動的に使われます。

これにより関数の呼び出しを簡潔にし、コードの重複を減らすことができます。

基本構文は以下の通りです。

// String型の引数nameを持つgreet関数を定義
fun greet(name: String = "ゲスト") { // デフォルト引数として"ゲスト"を定義
    println("こんにちは、$name さん!")
}

デフォルト引数の使用例

以下はデフォルト引数を使った具体的な例です。

引数を指定しなくても動作する便利さを示します。

fun greetUser(name: String = "ゲスト") {
    println("ようこそ、$name さん!")
}

// 使用例
greetUser()          // デフォルト値「ゲスト」が適用される
greetUser("太郎")    // 引数「太郎」を渡す

このコードを実行すると以下のように出力されます。

ようこそ、ゲスト さん!
ようこそ、太郎 さん!

このように特定の値を省略できるため、柔軟性が向上します。

キーワード引数とは?

キーワード引数とは、関数の呼び出し時に引数名を指定して値を渡す機能です。

引数名を指定することで、コードの可読性が向上し、引数の順番を気にする必要がなくなります。


以下はキーワード引数を使った例です。引数名を明記することで、順序が入れ替わっても正しく渡すことができます。

fun displayUserInfo(name: String, age: Int) { // String型のnameとInt型のageの2つの引数を持つ関数
    println("$name さんは $age 歳です。")
}

// 使用例
displayUserInfo(name = "花子", age = 25)
displayUserInfo(age = 30, name = "次郎") // 順序を入れ替えても問題ない

このコードを実行すると以下のように出力されます。

花子 さんは 25 歳です。
次郎 さんは 30 歳です。

このように関数の呼び出し時に引数だけでなく引数の名前まで記入することで可読性が向上します。

デフォルト引数とキーワード引数の組み合わせ

デフォルト引数とキーワード引数は同時に使うことができます。

この組み合わせによりより柔軟な関数呼び出しが可能になります。

fun introduce(name: String = "匿名", age: Int = 0) {
    println("こんにちは、$name さん!年齢は $age 歳です。")
}

// 使用例
introduce()                              // 両方の引数が省略される
introduce(name = "健太")                 // デフォルト値を部分的に利用
introduce(age = 40, name = "陽子")       // キーワード引数で順序を変更

このコードを実行すると以下のように出力されます。

こんにちは、匿名 さん!年齢は 0 歳です。
こんにちは、健太 さん!年齢は 0 歳です。
こんにちは、陽子 さん!年齢は 40 歳です。

まとめ

【初心者向け】Kotlinの関数の使い方を分かりやすくまとめた概念図。 特に関数の呼び出しや戻り値、関数のオーバーロード、ジェネリクス、デフォルト引数とキーワード引数について視覚的に理解できるようまとめている。

デフォルト引数とキーワード引数は、Kotlinの関数を柔軟にし、簡潔で読みやすいコードを書くために役立ちます。

これらの機能を使うことで引数の指定が楽になり、ミスを減らすことができます。

ぜひ実際のプログラムで試してみましょう!

デフォルト引数とキーワード引数の練習問題

名前と年齢を使った挨拶メッセージを作成するプログラムを作成しましょう。

このプログラムでは、デフォルト引数とキーワード引数の使い方を学びます。

名前を省略しても動作するようにしつつ、引数の順番を自由に指定できる柔軟な関数呼び出しを試してみましょう。

この問題の要件

以下の要件に従ってコードを完成させてください。

  1. 関数greetを定義:
    • 引数nameはデフォルト値として”ゲスト”を持つString型とすること。
    • 引数ageInt型とすること。
    • 関数内で以下のメッセージを表示すること: こんにちは、[name] さん!あなたは [age] 歳ですね。
  2. メイン関数を実装:
    • デフォルト引数を利用してnameを省略し、age = 25としてgreet関数を呼び出すこと。
    • キーワード引数を利用してnameを”太郎”、age = 30としてgreet関数を呼び出すこと。
  3. 出力結果を日本語で表示すること:
    • プログラムを実行した際、挨拶文が日本語で表示されること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

【例1】デフォルト引数の使用
こんにちは、ゲスト さん!あなたは 25 歳ですね。
【例2】キーワード引数の使用
こんにちは、太郎 さん!あなたは 30 歳ですね。

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:関数greetの定義
  □ 引数nameをデフォルト値”ゲスト”で宣言
  □ 引数ageを宣言
  □ printlnで文字列を埋め込み、挨拶メッセージを出力
2:main関数の定義
  □ printlnで「【例1】デフォルト引数の使用」を出力
  □ 関数greetをキーワード引数を使用して呼び出し
  □ printlnで「【例2】キーワード引数の使用」を出力
  □ 関数greetをキーワード引数を使用して呼び出し

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

// 挨拶メッセージを生成する関数
fun greet(name: String = "ゲスト", age: Int) {
    /*【穴埋め問題1】
    ここにprintln関数を使って挨拶メッセージを出力するコードを書いてください。
    文字列埋め込みを用いて、$name と $age を利用してください。
    */
}

fun main() {
    println("【例1】デフォルト引数の使用")
    /*【穴埋め問題2】
    ここにgreet関数をデフォルト引数を利用して呼び出すコードを書いてください。
    */
    
    println("【例2】キーワード引数の使用")
    /*【穴埋め問題3】
    ここにgreet関数をキーワード引数を利用して呼び出すコードを書いてください。
    引数として age=30 と name="太郎" を指定してください。
    */
}

以上がこの問題の穴埋めコードです。

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。



練習問題の解答と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

// 挨拶メッセージを生成する関数
fun greet(name: String = "ゲスト", age: Int) {
    println("こんにちは、$name さん!あなたは $age 歳ですね。")
}

fun main() {
    println("【例1】デフォルト引数の使用")
    greet(age = 25) // 名前は "ゲスト" として処理される

    println("【例2】キーワード引数の使用")
    greet(age = 30, name = "太郎") // 引数名を指定することで順番が自由になる
}

正解コードの解説

今回のコードでは、「デフォルト引数」と「キーワード引数」を利用した関数を作成し、それを使ったプログラムを実装しました。

それぞれの機能を詳細に解説します。

挨拶メッセージを生成する関数の定義

fun greet(name: String = "ゲスト", age: Int) {
    println("こんにちは、$name さん!あなたは $age 歳ですね。")
}
  1. fun greet: Kotlinで関数を定義する際に使用するキーワードです。この関数は名前nameと年齢ageを受け取り、それを使って挨拶メッセージを生成します。
  2. デフォルト引数:
    • name: String = "ゲスト"のように引数にデフォルト値を設定すると、関数を呼び出す際にその引数を省略することができます。
    • 例: greet(age = 25)とすると、nameは自動的に”ゲスト”が設定されます。
  3. 文字列テンプレート:
    • printlnの中の$name$ageは、Kotlinの文字列テンプレート機能を使っています。この機能により、変数の値を直接文字列の中に埋め込むことができます。

メイン関数

fun main() {
    greet(age = 25)
    greet(name = "太郎", age = 30)
}
  1. fun main: Kotlinプログラムのエントリーポイント(実行開始地点)です。この中でgreet関数を呼び出しています。
  2. キーワード引数:
    • 関数を呼び出す際に、greet(name = "太郎", age = 30)のように引数名を指定することで、引数の順番を自由に変更できます。
    • このコードでは2回目のgreet呼び出しでキーワード引数を使い、nameを”太郎”、ageを30と指定しています。

まとめ

このプログラムでは「デフォルト引数」と「キーワード引数」というKotlinの便利な機能を学びました。

  • デフォルト引数により、関数の呼び出しを簡略化できます。
  • キーワード引数を使うことで、引数の順序を気にせずに指定が可能です。

これらの機能はコードの可読性を高め、柔軟でエラーの少ない関数呼び出しを実現します。

ぜひ実際にコードを実行して、この機能の便利さを体感してください!

<<前のページ Kotlin記事一覧 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Kotlinのテキスト&問題集トップへ戻る
    トップページへ戻る