文系忘備録

どこにでもいる文系大学生の忘備録です

MENU

【プログラミング】なぜvar、valで定義するの?型推論について解説!

こんにちはdntfです。

プログラミング言語って色々ありますが、どの言語でも共通点は色々あったりします。そして個人的に多いと思うのが、型推論(var、val)です。

c#javascriptでもよく使いますし、kotlinなんかはvar、valなどでしか変数を定義できません。

 

 

varやvalの使い方

var a = 0;

↑こんな風に書くと思います。

この時、変数aに対して0(数字)が代入されているので、aは暗黙的にint型になります。

 

そんなこんなで代入されるものによって自動で型を決めてくれるのがvar、valになります

 

var a = 0; // int型
var b = "文字列だお" // string型
var c = 'a' // char型

とこんな感じで勝手に型を決めてくれる便利なやつです。

 

ですがこの場合型はvarと書いていますが中身は普通のintだったりstringだったりするわけなので、

var a = 0; //int
a = "mozi"; //intからstringに変換は出来ない

こんな感じで後から変換は出来ないです。

 

注意点

「じゃあもうintだとかstringとか使わねーじゃん!」

となりそうですが、これらは万能ではなく注意すべき点がいくつかあります。

それは、「そもそも代入しないと暗黙的に指定できない」という点にあります。

 

つまり、よくある

private int a; //← 型がなにか分からない
    main(){
        a = 0;
    }

こういうのはvarやvalでは出来ないということです。

 

使いどころ

「便利なの分かったけどintとかstringって書けばいいだけやん」って多分言われると思います。

google先生でもvarやvalを調べようとすると「使いどころ」や「使わない」といった検索候補も見かけます。

 

まあ使っても使わなくてもエラーは出ないので明確な使いどころってのは正直ないんだと思います。

 

ただ僕的には「コードが見やすくなる」という点があると思います。

MyClass myclass = new MyClass();
var myclass = new MyClass();

上の二つを見比べたとき、どっちの方が見やすいですか?

右側でクラスをインスタンス化しているのでたとえvarでも変数myclassがMyClassであるということはすぐにわかると思います。

そしてもしかしたら型名がMyClassではなくMyPersonalComputer..みたいなクソ長い時もあるかもしれません。

 

そんなときにvarと書けばコードも読みやすくなりやすいです。

 

以上!