【Dart基礎】変数って何?
今記事では、以下のFlutter大学のTwitterのイラスト教材を記事で補足していきます。
変数って何?
上図にもあるとおり、変数というのは値を入れておく箱のようなものです。別記事では箱に値が入ってなかったらnullですよというお話をしました。
実際にdartのサンプルコードを書きながら説明していきます。
変数名は自分で決めることができる
以下のようなnameという変数を作ってみました。
String name = 'kboy';
nameは自分で決めれる名前なので、別にnでもいいし、aでもいいしnameAでもいいし、基本的には変数名というのは自分で決められます。また、Flutterやdartに用意されている変数や誰か別のエンジニアが作った変数名に関してはそれに従って使うということになります。
例えば、FlutterでTextFieldに値を入れる処理を書くときに TextEditingController
というクラスを使いますが、これに用意されているtextという変数を使うと、TextFieldに入れられている文字列を取得できます。これは、Flutterを開発したGoogleのエンジニアさんがつけた変数名ですので、勝手に別の名前で取得したりはできません。
textEditingController.text
TextField関連の別記事
同様にして、あなたが名付けたnameという変数は、誰かが使うときにその名前だけで取得することができます。
みかんが入った状態と入ってない状態
dartでは、上図でいう箱にみかんが入ってない状態がnullです。nullについての話は以下の記事も合わせて読んでください。
また、入った状態になるとその変数の値を別の場所で使ったりできます。
具体的にみかんがない状態とある状態は以下のようにコードで説明できます。
みかんがない状態
String? name;
または
String? name = null;
みかんが入っている状態
String? name = 'kboy';
みかんの種類を決めれるのが "型"
図のイメージだと食べ物用の箱には、みかんとかりんごは入れられるけど、犬や机などは入れられないということです。
具体的に型って何?という話を次の章で説明します。
さまざまな "型"
上図ではString, int, boolを説明していますが、具体的にコードに落とし込むと以下みたいな感じです。
String name = 'kboy';
int age = 30;
bool isMale = true;
上から、nameはStringの型なのでdartでいうと''か""で囲まれる文字列しか入れることができません。10とかのような数字は入れられないわけです。
逆に、ageはintの型なので数字しか入れることができません。ageには'kboy'も入れられないし、'30'という文字列も入られません。人間には'30'が数字だと分かりますが、dartはそんなことは知らないので実質数字であろうがなかろうが''で囲まれた時点でStringの型だと理解し、30はいらられるけど'30'は入れられないということになります。
bool型の場合は、trueかfalseしか入れられません。yesかnoかみたいな値を表すときによく使う型です。
このように、他にも色々な型があります。多少の文法の違いはありますが、ほとんどのプログラミング言語でこれらの型は用意されています。1つプログラミング言語をマスターしていると他のプログラミング言語に移動しても比較的速く理解ができるのは、型はある程度共通だったりするからです。(Booleanだったりboolだったり、多少の文法表記の違いはあったりします)
型を用いることで、その箱(変数)に何が入るかを制限できるので、読みやすいコードにもなるし、バグが起きにくいコードにもできたりします。(dartにはdynamicという型がありますが、これはなんでも入れれる型です。dynamicを使うとなんでも突っ込めるので楽っちゃ楽なのですが多用すると危険なコードになります)
まとめ
以上です。今記事では以下のツイートをベースにDartの変数についての説明をしてみました。
Flutter大学の公式アプリでも、上記のような教材をみることができますので、よければ入学して勉強に活用してみてください。
Discussion