Flutter開発入門3 Dartの組み込み型

Flutter

はじめに

 この記事では、Dartの組み込み型について解説します。Dart言語における基本的なデータ型、リテラルの扱い方など、開発者が知っておくべきポイントを紹介します。これにより、Dartでの効率的なプログラミングが可能になります。

 Flutter開発入門の前回の記事は以下です。

Dartの基本的なデータ型

  • 数値 (int, double)
  • 文字列 (String)
  • ブール値 (bool)
  • レコード ((value1, value2))
  • リスト (List)
  • セット (Set)
  • マップ (Map)
  • ルーン (Rune)
  • シンボル (Symbol)

数値型 (Number)

 Dartでは、数値型は主にint(整数)とdouble(浮動小数点数)に分かれます。

  1. double: 浮動小数点数を表す型で、例えば3.14-0.001などが該当します。小数点を含む数値を扱う際に使用されます。
  2. 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開発入門の次の記事はこちらです。

コメント