表示テーマ
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)
}mainが始まる。boost(1.5)を呼ぶ。1.5が引数で、powerに渡る。power * 2.0が3.0になり、returnで返る。- 返ってきた
3.0をresultに代入する。 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側から呼ばれるという違いがあります。