MENU

【Kotlin】レッスン3-02:デフォルト引数とキーワード引数を使いこなそう|使い分けと例で学ぶ

tggaa478@yahoo.co.jp

一つ前のページでは関数の基本について学習しました。

今回は デフォルト引数とキーワード引数 について見ていきましょう。

Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:関数編

 ・Lesson3-1:関数の基本を理解しよう
 ・Lesson3-2:デフォルト引数とキーワード引数を理解しよう ◁今回はココ
 ・Lesson3-3:関数の戻り値を理解しよう
 ・Lesson3-4:真偽値を返す関数を理解しよう
 ・Lesson3-5:関数のオーバーロードを理解しよう
 ・Lesson3-6:ジェネリクスの基礎を理解しよう
 ・確認問題3-☆1:ブラックジャックゲームを作ろう
 ・確認問題3-☆2:丁半賭博ゲームを作ろう
 ・確認問題3-☆3:モンスターとのバトルゲームを作ろう
Lesson4:コレクション編
Lesson5:オブジェクト指向編

<<前のページ

学習記事一覧

次のページ>>

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の関数を柔軟にし、簡潔で読みやすいコードを書くために役立ちます。

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

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

練習問題|デフォルト引数とキーワード引数を使った関数を作ろう

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

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

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

この問題の要件

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

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

ただし、以下のような実行結果となること。

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

この問題を解くヒント

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

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

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

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

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

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

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

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

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

練習問題の解答と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

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

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

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

コードをブロックごとに分割して解説します。

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

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学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました