Skip to content

1. 変数 ​

学習目標: valとvarを選び、上から順に値の変化を追える。

ジャンプ台のコードでは、1.0をジャンプの強さとして使っています。jumpPowerという名前をつけると、何を表す値なのか読み取りやすくなります。

名前と値を結びつける ​

kotlin
val jumpPower = 1.0
println(jumpPower)

valは名前を宣言するキーワード、jumpPowerが名前、1.0が値です。ここでの=は「等しいか調べる」記号ではなく、右側の値を左側の名前に結びつける代入です。

println(jumpPower)は名前そのものではなく、その名前が指す値を表示します。この場合は1.0です。

valとvarの違い ​

書き方あとから別の値を代入ジャンプ台での例
valできないこの処理で使うジャンプの強さ
varできる増えていくジャンプ回数
kotlin
val jumpPower = 1.0
var jumps = 2
jumps = jumps + 1

最後の行では、まず右側を計算します。今のjumpsは2なので2 + 1は3。次に、その3をjumpsへ代入します。「jumpsとjumps + 1が等しい」という方程式ではありません。

valとvarの選び方

あとから代入し直す必要があるときにvarにします。valが禁止するのはその名前への再代入です。オブジェクトの中身も絶対に変わらない、という意味ではありません。第5章で確かめます。

出力の予想 ​

kotlin
var jumps = 2
val previous = jumps
jumps = 5
println(previous)
println(jumps)

previousも一緒に5になるでしょうか?

予想を確かめる

順に2と5です。previousに代入したのは、その時点の整数の値2です。変数どうしを自動で連動させたわけではありません。

演習 ​

ジャンプの強さを変えてみよう

jumpPowerを1.5にして、最後の出力を「1.5」「3」にする。jumpsは計算で増やそう。

目標の出力
1.5
3

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

ヒント 1

最初の行の1.0は、ジャンプの強さの初期値。

ヒント 2

jumpsに元の値より1多い値を代入しよう。

解答例
fun main() {
    val jumpPower = 1.5
    var jumps = 2
    jumps = jumps + 1
    println(jumpPower)
    println(jumps)
}

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

わざとエラーを出す ​

演習でvar jumpsをval jumpsに変えて実行してみましょう。どの行で困るか、実行前に予想してください。確かめたらvarに戻します。

追加課題: ジャンプ回数を2回増やして、最後に一度だけ表示してください。

MODでの使用例 ​

今のJumpPadBlock.ktでは、stepOnの中で1.0を直接渡しています。たとえば、その直前でval jumpPower = 1.0と宣言し、1.0の部分をjumpPowerにすると、値の役割を読み取りやすくできます。