組み込み型
Dart言語は、以下に対して特別なサポートを提供しています
- 数値 (
int
,double
) - 文字列 (
String
) - ブール値 (
bool
) - レコード (
(value1, value2)
) - 関数 (
Function
) - リスト (
List
、配列とも呼ばれます) - セット (
Set
) - マップ (
Map
) - ルーン (
Runes
; 多くの場合、characters
APIに置き換えられます) - シンボル (
Symbol
) - 値
null
(Null
)
このサポートには、リテラルを使用してオブジェクトを作成する機能が含まれています。たとえば、'this is a string'
は文字列リテラルであり、true
はブールリテラルです。
Dartのすべての変数はオブジェクト(クラスのインスタンス)を参照するため、通常はコンストラクタを使用して変数を初期化できます。組み込み型の中には、独自のコンストラクタを持つものがあります。たとえば、Map()
コンストラクタを使用してマップを作成できます。
他のいくつかの型もDart言語で特別な役割を果たします
Object
:Null
を除くすべてのDartクラスのスーパークラス。Enum
: すべての列挙型のスーパークラス。Future
とStream
: 非同期サポートで使用されます。Iterable
: for-inループと同期ジェネレーター関数で使用されます。Never
: 式が正常に評価を完了できないことを示します。常に例外をスローする関数に最もよく使用されます。dynamic
: 静的チェックを無効にすることを示します。通常は、代わりにObject
またはObject?
を使用する必要があります。void
: 値が使用されないことを示します。戻り値の型としてよく使用されます。
Object
、Object?
、Null
、およびNever
クラスは、クラス階層で特別な役割を果たします。これらの役割については、Null安全の理解で学習してください。
数値
#Dartの数値には2種類あります
int
- プラットフォームに応じて、64ビット以下の整数値。ネイティブプラットフォームでは、値は-263から263 - 1までです。Web上では、整数値はJavaScriptの数値(小数部のない64ビット浮動小数点値)として表され、-253から253 - 1までです。
double
- IEEE 754規格で指定されている64ビット(倍精度)浮動小数点数。
int
とdouble
はどちらもnum
のサブタイプです。 num型には、+、-、/、*などの基本的な演算子が含まれており、abs()
、ceil()
、floor()
などのメソッドも見つかります。(>>などのビット単位演算子は、int
クラスで定義されています。)numとそのサブタイプに必要なものがない場合は、dart:mathライブラリに含まれている可能性があります。
整数は小数点のない数値です。整数リテラルを定義する例を次に示します
var x = 1;
var hex = 0xDEADBEEF;
数値に小数が含まれている場合、それはdoubleです。doubleリテラルを定義する例を次に示します
var y = 1.1;
var exponents = 1.42e5;
変数をnumとして宣言することもできます。これを行うと、変数は整数値とdouble値の両方を持つことができます。
num x = 1; // x can have both int and double values
x += 2.5;
整数リテラルは、必要な場合に自動的にdoubleに変換されます
double z = 1; // Equivalent to double z = 1.0.
文字列を数値に変換する方法、またはその逆の変換方法を次に示します
// 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');
int
型は、従来のビット単位シフト(<<
、>>
、>>>
)、補数(~
)、AND(&
)、OR(|
)、およびXOR(^
)演算子を指定します。これらは、ビットフィールドのフラグを操作およびマスクするのに役立ちます。例えば
assert((3 << 1) == 6); // 0011 << 1 == 0110
assert((3 | 4) == 7); // 0011 | 0100 == 0111
assert((3 & 4) == 0); // 0011 & 0100 == 0000
詳細な例については、ビット単位およびシフト演算子のセクションを参照してください。
数値リテラルはコンパイル時定数です。多くの算術式も、オペランドが数値に評価されるコンパイル時定数である限り、コンパイル時定数です。
const msPerSecond = 1000;
const secondsUntilRetry = 5;
const msUntilRetry = secondsUntilRetry * msPerSecond;
詳細については、Dartの数値を参照してください。
1つ以上のアンダースコア(_
)を桁区切り文字として使用して、長い数値リテラルを読みやすくすることができます。複数の桁区切り文字を使用すると、より高いレベルのグループ化が可能です。
var n1 = 1_000_000;
var n2 = 0.000_000_000_01;
var n3 = 0x00_14_22_01_23_45; // MAC address
var n4 = 555_123_4567; // US Phone number
var n5 = 100__000_000__000_000; // one hundred million million!
文字列
#Dart文字列(String
オブジェクト)は、UTF-16コードユニットのシーケンスを保持します。単一引用符または二重引用符を使用して文字列を作成できます
var s1 = 'Single quotes work well for string literals.';
var s2 = "Double quotes work just as well.";
var s3 = 'It\'s easy to escape the string delimiter.';
var s4 = "It's even easier to use the other delimiter.";
${
expression
}
を使用して、式の値を文字列内に配置できます。式が識別子である場合、{}
を省略できます。オブジェクトに対応する文字列を取得するために、DartはオブジェクトのtoString()
メソッドを呼び出します。
var s = 'string interpolation';
assert('Dart has $s, which is very handy.' ==
'Dart has string interpolation, '
'which is very handy.');
assert('That deserves all caps. '
'${s.toUpperCase()} is very handy!' ==
'That deserves all caps. '
'STRING INTERPOLATION is very handy!');
隣接する文字列リテラルまたは+
演算子を使用して文字列を連結できます
var s1 = 'String '
'concatenation'
" works even over line breaks.";
assert(s1 ==
'String concatenation works even over '
'line breaks.');
var s2 = 'The + operator ' + 'works, as well.';
assert(s2 == 'The + operator works, as well.');
複数行の文字列を作成するには、単一または二重引用符で三重引用符を使用します
var s1 = '''
You can create
multi-line strings like this one.
''';
var s2 = """This is also a
multi-line string.""";
r
を前に付けることで「raw」文字列を作成できます
var s = r'In a raw string, not even \n gets special treatment.';
文字列でUnicode文字を表す方法の詳細については、ルーンと書記素クラスタを参照してください。
文字列リテラルは、補間された式がnullまたは数値、文字列、またはブール値に評価されるコンパイル時定数である限り、コンパイル時定数です。
// These work in a const string.
const aConstNum = 0;
const aConstBool = true;
const aConstString = 'a constant string';
// These do NOT work in a const string.
var aNum = 0;
var aBool = true;
var aString = 'a string';
const aConstList = [1, 2, 3];
const validConstString = '$aConstNum $aConstBool $aConstString';
// const invalidConstString = '$aNum $aBool $aString $aConstList';
文字列の使用に関する詳細については、文字列と正規表現を確認してください。
ブール値
#ブール値を表すために、Dartにはbool
という名前の型があります。 bool型のオブジェクトは2つだけです。ブールリテラルtrue
とfalse
で、どちらもコンパイル時定数です。
Dartの型安全は、if (非ブール値)
またはassert (非ブール値)
のようなコードを使用できないことを意味します。代わりに、次のように値を明示的にチェックします
// Check for an empty string.
var fullName = '';
assert(fullName.isEmpty);
// Check for zero.
var hitPoints = 0;
assert(hitPoints == 0);
// Check for null.
var unicorn = null;
assert(unicorn == null);
// Check for NaN.
var iMeantToDoThis = 0 / 0;
assert(iMeantToDoThis.isNaN);
ルーンと書記素クラスタ
#Dartでは、ルーンは文字列のUnicodeコードポイントを公開します。charactersパッケージを使用して、ユーザーが認識する文字(Unicode(拡張)書記素クラスタとも呼ばれます)を表示または操作できます。
Unicodeは、世界のすべての書記体系で使用される文字、数字、記号ごとに一意の数値を定義します。Dart文字列はUTF-16コードユニットのシーケンスであるため、文字列内にUnicodeコードポイントを表すには特別な構文が必要です。Unicodeコードポイントを表す通常の方法は、\uXXXX
です。ここで、XXXXは4桁の16進数値です。たとえば、ハート文字(♥)は\u2665
です。4桁以上の16進数を指定するには、値を中括弧で囲みます。たとえば、笑っている絵文字(😆)は\u{1f606}
です。
個々のUnicode文字を読み書きする必要がある場合は、charactersパッケージによってStringに定義されているcharacters
ゲッターを使用してください。返されるCharacters
オブジェクトは、文字列をgraphemeクラスターのシーケンスとして表したものです。characters APIの使用例を以下に示します。
import 'package:characters/characters.dart';
void main() {
var hi = 'Hi 🇩🇰';
print(hi);
print('The end of the string: ${hi.substring(hi.length - 1)}');
print('The last character: ${hi.characters.last}');
}
出力は、環境によって異なりますが、次のようになります。
$ dart run bin/main.dart
Hi 🇩🇰
The end of the string: ???
The last character: 🇩🇰
charactersパッケージを使用して文字列を操作する方法の詳細については、charactersパッケージの例とAPIリファレンスを参照してください。
シンボル
#Symbol
オブジェクトは、Dartプログラムで宣言された演算子または識別子を表します。シンボルを使用する必要はほとんどないかもしれませんが、識別子を名前で参照するAPIにとっては非常に重要です。これは、ミニファイ(難読化)によって識別子の名前は変更されますが、識別子のシンボルは変更されないためです。
識別子のシンボルを取得するには、シンボルリテラルを使用します。これは、#
の後に識別子を続けるだけです。
#radix
#bar
シンボルリテラルはコンパイル時定数です。
特に明記されていない限り、このサイトのドキュメントはDart 3.5.3を反映しています。ページの最終更新日:2024年11月5日。 ソースを表示 または 問題を報告する。