🔥

【Dart入門(3)】型|組み込み型(Number, String,Boolean)

に公開

Dartの組み込み型について

dartにはデフォルトで用意されている型が存在します。
以下はそのほかの言語でも用意されている型です。

よく使用する型
  • Numbers (int, double)
    • 数値に関する型で整数型と小数型
  • Strings (String)
    • 文字列に関する型
  • Booleans (bool)
    • 論理値に関する型。trueかfalseか
  • Records ((value1, value2))
    • 固定長で異なる型が共存できる型。タプルに該当
  • Functions (Function)
    • 関数型。関数もオブジェクトなので型があります。
  • Lists (List, also known as arrays)
    • 配列型
  • Sets (Set)
    • 集合型
  • Maps (Map)
    • 辞書型
  • Runes (Runes; often replaced by the characters API)
  • Symbols (Symbol)
  • The value null (Null)
    • 何もないを意味する型

これ以外に、dart特有の型も存在します。

dart特有の型
  • Object: Null型を除いた全ての型の親となる型。
    • Null以外はObject型を継承している。
  • Enum: 列挙型。
  • Future and Stream: 非同期処理で使用される型。
    • Future: 非同期型でawaitしてその結果を取得できる。
    • Stream: web socket 通信のように常にどこかと通信して結果を受け取る型。
  • Iterable: for ループで使用される型。
  • Never: 必ず成功しないことを意味する型。必ずエラーを吐く関数などが返す型。
  • dynamic: 型が決定しない型。大抵はObject型やObject?を使用した方が良い。
  • void: 値が使用されないことを意味する型。何も返却しない関数が返す。

これらの型は今すぐ理解する必要はありませんが、頭の片隅にこのような型があると認識しておくことが大切です。


組み込み型を詳しくみていく(Number,String,Boolean)

先ほど紹介した型のよく使用する型の使い方を詳しくみていきましょう。

Number

以下の2種類がNumber型にはあります。

  • int
    • 整数型は64ビット以下. -2^{63} to 2^{63} - 1。web上では-2^{53}から2^{53} - 1.
  • double
    • 64ビットの浮動小数点数。

いづれもNumber型を継承した型です。この型には+や-や/, *などの四則演算が可能です。また、これらのインスタンスに対してはabs()ceil(),floor()といったメソッドが提供されています。覚えておきましょう。

void main() {
  // int型の例
  int a = 10;
  int b = -3;

  print("a = $a, b = $b");
  print("a + b = ${a + b}"); // 加算
  print("a - b = ${a - b}"); // 減算
  print("a * b = ${a * b}"); // 乗算
  print("a / b = ${a / b}"); // 割算(結果はdouble)

  print("b.abs() = ${b.abs()}"); // 絶対値
  print("");

  // double型の例
  double x = 3.14159;
  double y = -2.7;

  print("x = $x, y = $y");
  print("x + y = ${x + y}");
  print("x - y = ${x - y}");
  print("x * y = ${x * y}");
  print("x / y = ${x / y}");

  print("y.abs() = ${y.abs()}");       // 絶対値
  print("x.ceil() = ${x.ceil()}");     // 切り上げ
  print("x.floor() = ${x.floor()}");   // 切り捨て
}

//出力結果
//a = 10, b = -3
//a + b = 7
//a - b = 13
//a * b = -30
//a / b = -3.3333333333333335
//b.abs() = 3

//x = 3.14159, y = -2.7
//x + y = 0.44158999999999995
//x - y = 5.84159
//x * y = -8.482293
//x / y = -1.1635518518518518
//y.abs() = 2.7
//x.ceil() = 4
//x.floor() = 3

またNumber型は文字列からも生成できます。逆もまた然りです。
double↔️String, int↔️String
toString()parse()メソッドは覚えておきましょう。

// String -> int
var one = int.parse('1');
assert(one == 1);

// String -> double
var onePointOne = double.parse('1.1');
assert(onePointOne == 1.1);

// int -> String
String oneAsString = 1.toString();
assert(oneAsString == '1');

// double -> String
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == '3.14');


String

文字列型です。文字列はシングルクォーテーションでもダブルクォーテーションでもインスタンスを作ることが可能です。

String s = 'string interpolation';
// 文字列への変数の埋め込みは${}か$変数
String t = '${s.toUpperCase()} is very handy!'

String s2 = 'The + operator ' + 'works, as well.';

String s1 = '''
You can create
multi-line strings like this one.
''';

// 改行文字などをそのままの文字として受け取りたいとき。r''と先頭にrをつける。
String r = r'In a raw string, not even \n gets special treatment.';

Boolean

Boolean型はtruefalseのどちらかしかありません。

bool isSuccess = true;

if (isSuccess) {
    print(isSuccess.toString());
}
//よく使用するやつ
String emptyWord = "";
if (emptyWord.isEmpty) {
    print("empty!");
}

List<int> emptyList = [];
if (emptyList.isEmpty) {
    print("empty!");
}
int a = 1;
bool isA = a == 1;
// isA は true

Discussion