19.0323

変数の定義

変数 に関しては、前回やりました。
前回は、ラベル を、値 に対して、貼り付けておく こと。
という説明をしましたが、
もう一つの考え方としては、
  箱 に、値 を、入れる
  その時、その箱の名前 が、変数
という、考え方です。
どちらでもいいと思います。

どちらでもいいというと無責任なようですが、
新しいプログラミング言語になればなるほど、
実際のコンピュータのアクションとは、別に、
プログラム言語独特のワールド、バーチャルなワールド、バーチャルな世界
を、作り出しています。
そして、その世界観を、その言語の 哲学/概念/発想/コンセプト として、
コードを書くように作られています。

そして、今となっては、プログラミング上達のためには、
実際のコンピュータのアクションを知ることより、
その言語の、発想 を、知ることの方が、重要だと思われます。
(例えば、スマホを、上手に扱うためには、使い方を、知ることであり、
 決して、スマホの機械的な仕組みを知ることではないようなものです。)
そういう意味で、上にあげた2つの考え方は、
Kotlin言語などの、変数 に対する、世界観 に、
どちらも、一致しているという意味です。

変数の定義
以前の言語は、変数を、先に、宣言 しておいて、
後から、実際の値を入れるようなやり方も、
許されていたようですが、
Kotlin では、最初に、変数 に対する 値 も、決めておきます。

書式は、こうなります。
  val 変数名: 変数の型 = 値
例えば、こんな風に書きます。
  val x: Int = 123
これを、先ほどの書式に当てはめて、意味を考えてみると、
  val/変数ですよ x/変数名 : Int/値には型があります = 123
こんな風に考えてください。

基本はこうですが、
後から、その必要性は分かると思いますが、
変数の値を変えたい時には、
  var
という、キーワード を使います。
全体では、
  var 変数名: 変数の型 = 値
となり、先ほどの、val が、var に、変わっただけです。

ここで、2つほど、実際にコードを書いて、使ってみましょう。

例1:文字列 を、変数に代入して、コンソール画面に出力する
// PrintString.kt
fun main() {
    val message: String = "文字列です"
        // message: メッセージ
    println(message)
}
そうすると、こんな風に、実行されると思います。
(TryKotlin でも、実行できます。
 また、右下にある
   □ on-the-fly type checking
 を、チェックしておくと、コードを書きながら、
 間違いをチェックしてくれます。)

では、もう一つやって見ましょう。

例2:Int型データを、変数に代入して、コンソール画面に出力する
// printInt.kt
fun main() {
    val x: Int = -123
    println(x)
        // println() は、Int型でも、使えます。
}
この場合は、こんな風になるでしょう。

また、Kotlin言語 が、大得意とすることに、「省略して書く」 ということがあります。

String型 や、Int型 に対して、まだ、記憶が定着していない時期には、
絶対、省略しない方がいいですが、
  "Kotlin、最高!"
これを見て、これは、「絶対 文字列 に決まっている」 と思うようになったら、
省略して書いてみてください。
  val message = "Kotlin、最高!"
これで、OKです。
Kotlin が、変数message は、String型 であると、
自動的に判断してくれます。
このことを、型推論と言います。

Int型 の、場合、前回説明しましたが、
普通に、半角文字で、数字を書くと、
Int型リテラル に、なります。
ですから、こう書けば、いいですね。

省略して書くことは、ストレスを減らし、
そして、それが、よりいいコードを、
書くきっかけにも、なると思います。

ただし、省略できない場合もあることを、知っておいてください。
例えば、Byte型 の、変数を定義する時は、省略できません。
なぜなら、Byte型 を、表す リテラル が、ないからです。
こんな、変数の定義になりますね。
  val y: Byte = 11
これをもし、
  val y = 11
とすれば、y は、Int型 になってしまうからです。



まとめ
値 が変わらない場合の定義:
  val 変数: 変数の型 = 値
値 が変わる場合の定義:
  var 変数: 変数の型 = 値
変数の定義は、変数の型 を、省略できる場合がある。