※ この記事は、Dartの基本文法について解説しています。全体を読むのにおおよそ5~10分程度かかると思われます。
DartはGoogleが開発したオブジェクト指向のプログラミング言語で、Flutterなどのフレームワークの開発に用いられています。以下では、Dartの基本的な文法について解説します。
変数の宣言
Dartでは、変数を宣言するには var
、final
、const
などのキーワードを使用します。
var name = "John"; final age = 30; const double PI = 3.14;
var
は、宣言時に初期値を代入することで、自動的に変数の型が決定されます。 final
は、変数の値を一度だけ代入でき、その後は変更できないことを示します。 const
は final
と同様ですが、コンパイル時に値が決定される必要があります。
データ型
Dartには、以下のようなデータ型があります。
- int:整数を表す
- double:浮動小数点数を表す
- String:文字列を表す
- bool:真偽値を表す
- List:リストを表す
- Map:キーと値のペアを表す
int num1 = 10;
double num2 = 3.14;
String str = "Hello, World!";
bool flag = true;
List<String> list = ["apple", "banana", "orange"];
Map<String, int> map = {"apple": 100, "banana": 200, "orange": 300};
条件分岐
Dartでは、 if
、else
、else if
などを使用して、条件分岐を実装することができます。
if (score >= 90) {
print("Great!");
} else if (score >= 80) {
print("Good!");
} else if (score >= 70) {
print("Average.");
} else {
print("Needs improvement...");
}
繰り返し処理
Dartでは、 for
、while
、do-while
などを使用して、繰り返し処理を実装することができます。
// for
for (var i = 0; i < 10; i++) {
print(i);
}
// while
var i = 0;
while (i < 10) {
print(i);
i++;
}
// do-while
var i = 0;
do {
print(i);
i++;
} while (i < 10);
関数
Dartでは、関数を宣言することができます。
int add(int x, int y) {
return x + y;
}
var result = add(1, 2);
print(result);
クラスとオブジェクト
Dartはオブジェクト指向プログラミング言語であり、クラスとオブジェクトをサポートします。
class Person {
String name;
int age;
Person(this.name, this.age);
void sayHello() {
print("Hello, my name is $name, and I'm $age years old.");
}
}
var person = Person("John", 30);
person.sayHello();
上記のコードは、 Person
クラスを定義して、 name
と age
のプロパティを持ち、 sayHello
メソッドで自己紹介するように設定されています。その後、 Person
クラスのインスタンスを作成し、 sayHello
メソッドを呼び出しています。
継承
Dartでは、クラスを継承することができます。継承することで、既存のクラスを拡張して新しいクラスを作成することができます。
class Student extends Person {
String major;
Student(String name, int age, this.major) : super(name, age);
void sayMajor() {
print("My major is $major.");
}
}
var student = Student("Mike", 20, "Computer Science");
student.sayHello();
student.sayMajor();
上記のコードは、 Student
クラスを定義して、 major
プロパティを追加し、 Person
クラスを継承しています。そして、 sayHello
メソッドをオーバーライドし、 sayMajor
メソッドを追加しています。その後、 Student
クラスのインスタンスを作成し、 sayHello
メソッドと sayMajor
メソッドを呼び出しています。
getterとsetter
Dartでは、クラス内のプロパティにアクセスするための getter
と setter
を定義することができます。
class Person {
String _name;
int _age;
Person(this._name, this._age);
String get name => _name;
set name(String name) {
_name = name;
}
int get age => _age;
set age(int age) {
_age = age;
}
void sayHello() {
print("Hello, my name is $name, and I'm $age years old.");
}
}
var person = Person("John", 30);
person.sayHello();
person.name = "Mike";
person.age = 25;
person.sayHello();
上記のコードは、 Person
クラスで name
と age
のプロパティを定義して、それぞれの getter
と setter
を定義しています。そして、 sayHello
メソッドで name
と age
の値を使用しています。その後、 name
と age
の値を変更し、再び sayHello
メソッドを呼び出しています。
以上が、Dartの基本的な文法についての解説となります。
例外処理
Dartでは、 try
、catch
、finally
などを使用して、例外処理を実装することができます。
try {
// 例外が発生する可能性があるコード
var result = 10 ~/ 0; // 例外が発生する
} on UnsupportedError {
// 発生した例外に対する処理
print("You can't divide by zero.");
} finally {
// 必ず実行される処理
print("Done.");
}
上記のコードは、 try
ブロック内で例外が発生する可能性があるコードを実行し、 catch
ブロックで発生した例外に対する処理を記述しています。また、 finally
ブロックでは、例外が発生しても必ず実行される処理を記述しています。
ラムダ式
Dartでは、ラムダ式を使用して、匿名関数を定義することができます。
var numbers = [1, 2, 3, 4, 5];
numbers.forEach((number) => print(number));
上記のコードは、 forEach
メソッドにラムダ式を渡して、リスト内のすべての要素を出力しています。
非同期処理
Dartでは、 async
、await
、Future
などを使用して、非同期処理を実装することができます。
Future<void> fetchData() async {
print("Fetching data...");
await Future.delayed(Duration(seconds: 1));
print("Data fetched.");
}
void main() {
fetchData();
print("Program finished.");
}
上記のコードは、 fetchData
メソッド内で非同期処理を実装しています。 await
キーワードを使用して、非同期処理が完了するまで待機し、 Future
オブジェクトを返します。その後、 main
メソッドで fetchData
メソッドを呼び出しています。
まとめ
以上が、Dartの基本的な文法についての解説となります。Dartは、オブジェクト指向プログラミング言語であり、FlutterやAngularDartなどのフレームワークの開発に使用されます。Dartの文法を理解することで、より効率的かつ堅牢なコードを記述することができるようになります。