MENU

【Kotlin】レッスン3-03:関数の戻り値を理解しよう|returnと型の使い方を基礎から解説

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の関数では計算結果や処理の結果を呼び出し元に返す仕組みがあり、これを「戻り値」と呼びます。

本記事では、戻り値の基本的な使い方について解説します。

関数の戻り値とは何か?|Kotlinで処理結果を返す基本

関数の戻り値とは、関数が処理を終えた後に結果を返す値のことです。

戻り値を使うことで関数が計算や処理した結果を他の処理に活用できます。

例えば2つの数値を加算する関数があれば、その計算結果を戻り値として返すことが可能です。

戻り値の書き方|returnの使い方と型の指定方法

Kotlinの関数で戻り値を返す際にはreturnキーワードを使用します。

また、関数の定義時に戻り値の型を明示する必要があります。

戻り値がない場合にはUnit型を指定しますが、Unitは省略可能です。

// 戻り値がある関数
fun add(a: Int, b: Int): Int { // 2つの引数を持ち、Int型の戻り値を返すadd関数を定義
    return a + b // 戻り値としてa+bを返す
}

// 戻り値がない関数(Unit型)
fun printMessage(message: String) {
    println(message)
// 省略しないなら以下のように書く
// fun printMessage(message: String): Unit {
}

上記の例ではadd関数がInt型の戻り値を持ち、printMessage関数は戻り値を持ちません。

戻り値の具体例|呼び出し元で値を活用する方法

次に、戻り値を使った実際の例を見てみましょう。

// 数値を加算し、結果を返す関数
fun calculateSum(x: Int, y: Int): Int { // 2つの引数を持ち、Int型の戻り値を返すcalculateSum関数を定義
    return x + y // この関数の戻り値(x+y)
}

// 関数を呼び出して結果を利用する
fun main() {
    val sum = calculateSum(5, 10)  // calculateSum関数に2つの引数を渡し、戻り値を定数sumに代入
    println("計算結果は $sum です") // 出力:計算結果は15です
}

この例では、calculateSum関数が2つの引数を受け取り、その合計をreturnキーワードを使って呼び出し元に返します。

呼び出し元のmain関数では、返された値をsum変数に代入し、printlnで出力しています。

また、早期リターンを利用して特定の条件で処理を終了することも可能です。

fun isPositive(number: Int): Boolean {
    if (number > 0) {
        return true
    }
    return false
}

この関数は引数が正の数かどうかを判定し、結果を呼び出し元に返します。

まとめ|関数の戻り値で柔軟なコードを実現しよう

Kotlinの関数で戻り値を使うことで関数が処理した結果を柔軟に活用できます。

戻り値の型を明示し、適切にreturnキーワードを使うことが重要です。

戻り値の仕組みを活用すれば、効率的で読みやすいコードを書くことができるでしょう。

練習問題|戻り値を活用した計算プログラムを作ろう

ユーザーが入力した2つの数値を加算し、その合計を計算して出力するプログラムを作成してください。

このプログラムでは関数を使って計算結果を戻り値として返し、メイン関数でその結果を利用します。

また数値以外が入力された場合にはエラーメッセージを表示するようにしてください。

この問題の要件

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

  1. 関数addNumbersを作成し、2つの整数を引数として受け取り、その合計を戻り値として返すこと。
  2. メイン関数で以下の処理を実装すること:
    • ユーザーから2つの数値を入力する。
    • 入力値を整数に変換し、関数addNumbersを呼び出す。
    • 計算結果を画面に表示する。
    • 入力が数値でない場合は例外処理でエラーメッセージを表示する。
  3. 必要に応じてtry-catch構文を使用してエラーハンドリングを行うこと。

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

1つ目の数を入力してください:
10
2つ目の数を入力してください:
20
2つの数の合計は: 30 です

この問題を解くヒント

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

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

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

1:関数addNumbersの定義
  □ 戻り値として2つの整数の合計を返す
2:main関数の定義
  □ 「1つ目の数を入力してください:」と出力
  □ ユーザーからの入力をreadLine()で受け取り、デフォルト値”0″を設定して変数input1に代入
  □ 「2つ目の数を入力してください:」と出力
  □ ユーザーからの入力をreadLine()で受け取り、デフォルト値”0″を設定して変数input2に代入
  □ tryブロックの開始
  □ □ input1を整数に変換して変数number1に代入
  □ □ input2を整数に変換して変数number2に代入
  □ □ addNumbers関数を呼び出し、結果を変数resultに代入
  □ □ 「2つの数の合計は: {result} です」と出力
  □ catchブロックでNumberFormatExceptionを捕捉
  □ □ 「エラー: 数値を入力してください」と出力

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

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

// 二つの整数を加算する関数
fun addNumbers(a: Int, b: Int): Int {
    /* 【穴埋め問題1】
    ここで戻り値として2つの整数を加算した結果を返すコードを書いてください。
    */
}

// メイン関数
fun main() {
    println("1つ目の数を入力してください:")
    val input1 = readLine() ?: "0" // Null安全のためにデフォルト値を設定
    println("2つ目の数を入力してください:")
    val input2 = readLine() ?: "0"

    try {
        // 入力を整数に変換
        val number1 = input1.toInt()
        val number2 = input2.toInt()

        // 関数を呼び出して結果を受け取る
        /* 【穴埋め問題2】
        ここでaddNumbers関数を呼び出し、結果を変数resultに代入するコードを書いてください。
        */

        // 結果を表示
        println("2つの数の合計は: $result です")
    } catch (e: NumberFormatException) {
        // 数値以外が入力された場合の例外処理
        println("エラー: 数値を入力してください")
    }
}

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

練習問題の解答と解説

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

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

Q
正解コード
// 二つの整数を加算する関数
fun addNumbers(a: Int, b: Int): Int {
    // 戻り値を指定するにはreturnを使用します。
    return a + b
}

// メイン関数
fun main() {
    println("1つ目の数を入力してください:")
    val input1 = readLine() ?: "0" // Null安全のためにデフォルト値を設定
    println("2つ目の数を入力してください:")
    val input2 = readLine() ?: "0"

    try {
        // 入力を整数に変換
        val number1 = input1.toInt()
        val number2 = input2.toInt()

        // 関数を呼び出して結果を受け取る
        val result = addNumbers(number1, number2)

        // 結果を表示
        println("2つの数の合計は: $result です")
    } catch (e: NumberFormatException) {
        // 数値以外が入力された場合の例外処理
        println("エラー: 数値を入力してください")
    }
}
Q
正解コードの解説

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

関数addNumbersの定義

fun addNumbers(a: Int, b: Int): Int {
    return a + b
}
  • 関数定義: fun addNumbers(a: Int, b: Int): Int
    この関数は2つの整数を引数として受け取り、その合計を戻り値として返します。戻り値の型はIntです。
  • 戻り値: return a + b
    このreturn文は関数の計算結果(2つの整数の合計)を呼び出し元に返す役割を果たします。戻り値は次の処理で利用されます。

メイン関数の定義

fun main() {
    println("1つ目の数を入力してください:")
    val input1 = readLine() ?: "0"
    println("2つ目の数を入力してください:")
    val input2 = readLine() ?: "0"
  • println関数: ユーザーに入力を求めるメッセージを表示しています。
  • readLine(): ユーザーから入力を受け取るために使用します。?:はNull安全演算子で、入力がnullの場合にはデフォルト値"0"を代入しています。

入力値の変換と例外処理

try {
    val number1 = input1.toInt()
    val number2 = input2.toInt()
  • toInt(): 入力された文字列を整数に変換します。変換に失敗した場合、例外が発生します。
  • try-catch構文: 数値以外が入力された場合のエラーハンドリングを行います。

関数の呼び出しと結果の表示

val result = addNumbers(number1, number2)
println("2つの数の合計は: $result です")
  • 関数の呼び出し: addNumbers(number1, number2)で2つの整数を引数として渡し、その合計を取得します。
  • 結果の表示: 計算結果を画面に出力しています。

例外処理でのエラー対応

} catch (e: NumberFormatException) {
    println("エラー: 数値を入力してください")
  • 例外のキャッチ: 数値以外が入力された場合、このブロックが実行されます。
  • エラーメッセージ: 「エラー: 数値を入力してください」というメッセージを表示します。

まとめ

このプログラムでは「関数の戻り値」の仕組みを利用して、関数が計算結果を呼び出し元に返す仕組みを学びます。

初心者にとって、関数の役割と戻り値を理解することはプログラミングの基礎を固める重要なステップです。

ぜひ他の計算や処理でもこの考え方を活用してみてください!

もっと分かりやすいサイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいKotlin学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました