Skip to content

4. 関数 ​

学習目標: 引数を渡し、戻り値を受け取り、呼び出しの順番を追える。

関数は、ひとまとまりの処理を定義するものです。名前をつけて呼び出せるので、同じ処理を何度も書く必要がなくなります。

引数と戻り値 ​

kotlin
fun boost(power: Double): Double {
    return power * 2.0
}
部分役割
fun関数を宣言する
boost関数の名前
power: Double受け取る値の名前と型(パラメータ)
: Double返す値の型(戻り値の型)
return power * 2.0計算した値を呼び出し元へ返す

宣言しただけでは実行されない ​

kotlin
fun main() {
    val result = boost(1.5)
    println(result)
}
  1. mainが始まる。
  2. boost(1.5)を呼ぶ。1.5が引数で、powerに渡る。
  3. power * 2.0が3.0になり、returnで返る。
  4. 返ってきた3.0をresultに代入する。
  5. println(result)で表示する。

関数の宣言では、呼び出されたときに実行する処理を定義します。宣言しただけでは、中の計算は実行されません。

予想:2回呼ぶとどうなる? ​

boost(1.0)とboost(1.5)では、それぞれ別の値がpowerに渡されます。前の呼び出しの引数が残るわけではありません。出力を予想してから演習を直しましょう。

強さを計算する関数を作ろう

boostが受け取ったpowerの2倍を返すようにする。2つの呼び出しで結果が変わることを確認。

目標の出力
2.0
3.0

自動採点ではありません。入力を変えた場合も結果を確かめてください。

ヒント 1

変更する場所はboostの中。mainの数値はそのまま。

ヒント 2

受け取ったpowerに2.0を掛けた値をreturnしよう。

解答例
fun boost(power: Double): Double {
    return power * 2.0
}

fun main() {
    println(boost(1.0))
    println(boost(1.5))
}

解答例を閉じて、もう一度自分で書いてみてください。これ以外の正しい書き方もあります。

printlnとreturnの違い ​

kotlin
fun showPower(power: Double) {
    println(power)
}

printlnは値を表示する処理です。returnは値を呼び出し元へ返す仕組みです。このshowPowerの戻り値の型はUnitで、有用な計算結果を返しません。println(power)をしたからといって、powerが戻り値になるわけではありません。

短い関数は次のようにも書けます。まずは長い書き方で流れが分かってから使いましょう。

kotlin
fun boost(power: Double): Double = power * 2.0

名前を使える範囲(スコープ) ​

powerはこの関数の中で使う名前です。mainから直接println(power)とは書けません。関数の内側で作った名前を外側から使いたい場合は、必要な値を戻り値で受け取ります。

MODでの使用例 ​

ModBlocks.initialize()は、初期化の処理を名前で呼び出しています。stepOn(...)も関数ですが、踏まれたときにMinecraft側から呼ばれるという違いがあります。