19.0330

when文 と スコーピング

when文 とは、 if/ else if / else 文 のように、
条件によって、プログラムの流れを、コントロールするための、構文です。
when文 の利点は、まるで、「箇条書き」 のように、条件を、書きだすことができるため、
「ルールさえ知っていれば」、全体像を、素早く把握することが出来るでしょう。

イメージとしては:
  when(チェックすべき) {
    チェックする条件①の時 ⇒ true なら、適用される
    チェックする条件②の時 ⇒ true なら、適用される
    チェックする条件③の時 ⇒ true なら、適用される
    チェックする条件④の時 ⇒ true なら、適用される
    チェックする条件⑤の時 ⇒ true なら、適用される
    それ以外の時 ⇒ 適用される
  }

このイメージをもとに、実際のコードを書いてみましょう。
// TestWhen.kt(テストwhen)
fun main(){
    val x: Int = 18

    when(x) {
        in 1..5 -> println("1~5")
        in 6..10 -> println("6~10")
        in 11..15 -> println("11~15")
        in 16..20 -> println("16~20")
        else -> println("else")
    }
}
// 16~20
この when の仕組みは、
チェックすべき値(ここでは、Int型変数x)が、
  in 1..5 から else まで
関連付けられて、チェックしていくことです。

そして、この関連付けて、チェックしていくことを、
  スコーピング
と言います。

3つの if文関連 を、やったので、もう直感的に理解できますね。

when文 に慣れるために、もう一つ、例文を見てみましょう。
// TestWhen2.kt(テストwhen2)
fun main(){
    val testString: String = "PineApple"

    when(testString) {
        "Lemon" -> print("レモン")
        "Apple" -> print("りんご")
        "Grape" ->print("ぶどう")
        "PineApple" -> print("パイナップル")
        "strawberry" -> print("いちご")
        // else は、必須ではありません。
    }
}
// パイナップル

と、ここで、ネットを検索していたら、対話式のプログラム(インタラクティブな)を、
書く方法を、見つけました。

しかも、簡単です!

Kotlin の、ライブラリなので、Javaコード を、importする必要もありません。

つまり、
  readLine()関数
を使うだけです。

まだ、関数については、詳しく触れていないので、ざっと読んでください。
  val yourEnter = readLine()
  (val/変数ですよ yourEnter/変数名 = readLine()/readLine関数があなたの入力を返します)

こんなコードを書いてください。
// TestReadLine.kt
fun main(){
    val yourEnter = readLine()

    when(yourEnter){
        "1" -> print("one")
        "2" -> print("two")
        else -> print("too difficult")
    }
}

// あなたの入力に合わせて、答えます。
このコードを実行すると、、残念ながら、TryKotlin では、実行できません
、IntelliJならOK、、
下のコンソール画面は、何も実行されてないように見えますが、
ここに、1 を、入力すると(これは、String型 になることになっています)
コンソールが、one と、答えます。
2 の時は、two と、答えます。
それ以外の時は、too difficult(難しすぎる)と、答えることになっています。

はっきり言って、テストのための変数の定義が、
  val yourEnter = readLine()
に、なっただけだから、簡単すぎます、、素晴らしいです。

もし、あなたが、IntelliJ を、使っているのであれば、
これから積極的に使ってください。
より、リアルな、コーディング学習体験が、出来ると思いますので。



まとめ
簡単なまとめですが、このコードを、理解できますか?
以上です。