はじめに
この記事では、Dartの組み込み型について解説します。Dart言語における基本的なデータ型、リテラルの扱い方など、開発者が知っておくべきポイントを紹介します。これにより、Dartでの効率的なプログラミングが可能になります。
Flutter開発入門の前回の記事は以下です。
Dartの基本的なデータ型
- 数値 (int, double)
- 文字列 (String)
- ブール値 (bool)
- レコード ((value1, value2))
- リスト (List)
- セット (Set)
- マップ (Map)
- ルーン (Rune)
- シンボル (Symbol)
数値型 (Number)
Dartでは、数値型は主にint(整数)とdouble(浮動小数点数)に分かれます。
- double: 浮動小数点数を表す型で、例えば
3.14
や-0.001
などが該当します。小数点を含む数値を扱う際に使用されます。 - nt: 整数を表す型で、例えば
42
や-7
などが該当します。非常に高速な演算が可能で、数値の範囲は環境によって異なりますが、非常に大きな整数も扱うことができます。
以下例になります。
int myInt = 10;
double myDouble = 3.14;
文字列型 (String)
文字列型はStringで表され、テキストデータを扱います。シングルクォート ('
) またはダブルクォート ("
) で囲まれたテキストがString型として認識されます。Dartでは、文字列補間が非常に便利で、変数や式を簡単に文字列に埋め込むことができます。以下例になります。
String greeting = 'Hello, TechGrowUp!';
String name = 'Tech';
String message = 'Welcome, $name!';
ブール型 (Boolean)
ブール型はboolで表され、true
またはfalse
の2つの値しか取りません。条件分岐やループの制御に使用されます。以下例になります。
bool isTech = true;
bool isTechGrowUp = false;
レコード ((value1, value2))
レコードは、複数の値を組み合わせて一つの単位として扱うための新しいデータ構造です。レコードは、タプルに似ていますが、Dartの言語仕様により最適化された形で提供されています。レコードを使うと、異なる型のデータをまとめて扱うことができ、特に関数の戻り値や、一時的なデータのグループ化に便利です。以下例になります。
(var name, var age) = ('Tech', 30);
リスト型 (Lists)
リストは、複数の値を一つにまとめて管理するための型で、DartではListとして扱われます。リストには、同じ型のデータを複数格納できます。インデックスを使って各要素にアクセスできるのが特徴です。以下例になります。
List<int> numbers = [1, 2, 3, 4, 5];
List<String> names = ['Tech', 'Grow', 'Up'];
セット (Set)
セット型は、Dartのコレクションの一種で、重複しない要素の集合を管理するために使用されます。リスト型(List)と異なり、セット型は要素の順序を保証しませんが、要素の重複を許さないという特徴があります。これにより、ユニークなデータを扱う際に非常に便利です。以下例になります。
Set<int> uniqueNumbers = {1, 2, 3, 4, 5};
マップ型 (Map)
マップはキーと値のペアを格納する型で、Mapとして扱われます。リストがインデックスで要素を管理するのに対して、マップはキーで値を管理します。これにより、複雑なデータ構造を簡単に管理できます。以下例になります。
Map<String, int> scores = {
'Tech': 90,
'Grow': 85,
'Up': 95,
};
ルーン (Rune)
ルーンは、DartにおけるUnicodeコードポイントを表すためのデータ型です。通常の文字列(String)型では、文字をUTF-16コード単位として扱いますが、これではサロゲートペア(サロゲートペアは一つの文字を表すために二つのコードユニットが必要となる)を含む文字や、特殊なUnicode文字を正確に扱うことができません。ルーンを使うことで、これらの課題を克服し、テキストデータをより柔軟に操作できるようになります。以下例になります。
String emoji = '😊';
print(emoji.runes); // (128522)
// この例では、😊という絵文字のUnicodeコードポイントが128522であることが表示されます。
シンボル(Symbol)
シンボル(Symbol
型)は、Dartで識別子を一意に表すためのデータ型です。通常、クラスのメソッドやプロパティにアクセスする際には、その名前を直接使用しますが、シンボルを使うと、その名前を動的に扱えるようになります。あまり使うケースは少ないと思いますが以下に利用するときの例を示します。
- リフレクション: クラスのメソッドやプロパティに動的にアクセスする場合に使用。
- 名前衝突の回避: 名前が競合する可能性がある場合、シンボルを使って一意な識別子として扱うことで、名前の衝突を避けることができる。
- 動的メソッド呼び出し: メソッド名が動的に決定される状況で、シンボルを使って柔軟にメソッドを呼び出せる。
まとめ
この記事では、Dartの組み込み型について詳しく解説しました。数値型や文字列型、ブール型、レコード型、リスト型、セット型、マップ型、ルーン、シンボルといった基本的なデータ型を理解することで、Dartでのプログラミングがより効率的で強力なものになります。
Flutter開発入門の次の記事はこちらです。
コメント