より複雑なロジックコードを書けるプログラミング言語であるDartの基本を調べましょう。
変数とデータ型
Dartは、静的にデータ型(static typed)を持つオブジェクトを向く言語です。初期化の時に値が割り当てられていない変数はデフォルトでnull値があります。変数を宣言する時、またはプログラミングの何時でも、変数にnull値を割り当てることもできます。
基本的なデータ型
int, double, bool, String はDartの基本的なデータ型です。変数の存続期間中は、最初に定義されたデータ型でのみ使用されます。異なるデータ型を割り当てようとすると、コンパイルエラーが発生します。
infinity値はdouble classのstaticプロパティであり、double.infinityを使用してアクセスできます。
Varキーワード
var型で宣言された変数に任意の値を割り当てることができ、Dartは初期化値からデータを自動的に推論します。 型推論(Type-inference)はDartの組み込み機能です。
Num データ型
numキーワードはdartの中にもあり、intとdoubleの両方を持つ変数を作成できます。 ユースケースは、変数がいつでもint型またはdouble型の値を保持できる場合です。
文字列 (String)
文字列は、Javascriptと同様に、一重引用符' 'または二重引用符 " "を使用して宣言できます。 一重引用符'''または二重引用符"でも1行を複数行のコードに分割することもできます。
動的データ型(dynamic)
dynamicキーワードを使用してdynamic変数を明示的に宣言することができます。又は、データ型が明示的に宣言されていない場合にdartで自動的に割り当てることができます。
注意
常にdynamicデータ型を注意して使用し、できるだけ頻繁にデータ型を明示的に宣言してください。 そうしないと、コードにバグが発生する可能性があります。 注意:自分が何をしているかがよくわかっている場合だけにdynamicを使用します。
機能 (function)
Dartはtyped languageです。つまり、Dartの中に(関数も含む)何でも型(type)があります。 以下のmain関数の例を参照しましょう。
Main関数
この関数の戻り型はvoidです。 Dartは、アプリの起動時に自動的にmain(){...}を呼び出します。 これは、このmain関数が呼び出されたときに実施される単純なforループです。
一般に、任意の関数に任意の名前を付けることができますが、mainはDartアプリの起動点であるため、特別な名前です。
注意
関数に名前を付けるには、camel-caseの規則に従う必要があります。つまり、yourFunctionName(){}です。
関数(function)の使い方
関数の機能を確定する
以上の説明の通りに、camel-caseで関数を定義し、名前を付けることができます。 関数から値を返す場合は、関数の戻り型を宣言する必要があります。 強行ではありませんが、実行しない場合、Dartはエラーを出さずに警告を表示するとともに実行します。 戻り型がある場合と戻り型がない場合の関数のこの例を見てみましょう。
これから、最初の関数addTwoNumbers(...){...}について考えてみましょう。 この関数には、明示的に宣言された戻り型と引数型はありません。 それで、以下のようにDartは語法を解析し、この関数を実施します。
Dartは、dynamic型を関数と引数に自動的に割り当てます。 この関数の引数としてどんなデータ型を渡すことができ、dartはそれを追加しようとします。 ただし、この関数宣言する方法はエラーが発生しやすくなります。理由はint型とbool型を追加できる時に、コンパイルエラーではなく、ランタイムエラーが発生します!
2番目の関数void addTwoIntegerNumbers(int num1, int num2){...}は、voidとintの戻り型と引数型を明示的に宣言しているため、エラーが発生し難くなっています。この関数に intではないデータを渡すと、すぐにコンパイラーはあなたに警告が出されます。
3番目の関数int sumOfTwoNumbers(int num1, int num2){...}ですが、関数から返すため、戻り型がsum代わりにintです。
main関数では、これの名前でメソッドを呼び出し、実施するように、丸括弧()を追加します。
もう一度注意します! dynamic型は避けてください!
Dartは、strongly-typed言語とloosely-typed言語の間に組み合わせですが、上記の例で示したように、できるだけdynamic型を避く必要があります。 これにより、コードがより安定し、エラーが発生しなくなります。
ここまで第一部は終わりです。この記事の第二部でお会いしましょう!
株式会社INTS 開発部 ハイ.アン