dart:core

为每个 Dart 程序提供内置的类型、集合和其他核心功能。

此库将自动导入。

此库中的一些类,如 Stringnum,支持 Dart 的内置数据类型。其他类,如 ListMap,提供了管理对象集合的数据结构。还有其他类代表常用的数据类型,如 URI、日期和时间以及错误。

数字和布尔值

intdouble 分别支持 Dart 的内置数值数据类型:整数和双精度浮点数。类型为 bool 的对象为 true 或 false。这些类型的变量可以由文字构成。

int meaningOfLife = 42;
double valueOfPi  = 3.141592;
bool visible      = true;

字符串和正则表达式

String 是不可变的,代表字符序列。

String shakespeareQuote = "All the world's a stage, ...";

StringBuffer 提供了一种构建字符串的有效方式。

var moreShakespeare = StringBuffer();
moreShakespeare.write('And all the men and women ');
moreShakespeare.write('merely players; ...');

StringStringBuffer 类实现了字符串分割、连接和其他字符串操作功能。

bool isPalindrome(String text) => text == text.split('').reversed.join();

RegExp 实现了 Dart 正则表达式,它为在文本中匹配模式提供了一种语法。例如,以下是一个匹配包含一个或多个数字的子字符串的正则表达式

var numbers = RegExp(r'\d+');

Dart 正则表达式具有与 JavaScript 正则表达式相同的语法和语义。有关 JavaScript 正则表达式的规范,请参阅 ecma-international.org/ecma-262/5.1/#sec-15.10

集合

《dart:core》库提供了基本集合,例如 ListMapSet

一个 List 是一个有序的、具有长度的对象集合。有时列表也称为数组。当你需要通过索引访问对象时,请使用

var superheroes = ['Batman', 'Superman', 'Harry Potter'];

一个 Set 是一个无序的、唯一的对象集合。你不能有效地通过索引(位置)获取项。向集合中添加已存在的元素不会有任何效果。

var villains = {'Joker'};
print(villains.length); // 1
villains.addAll(['Joker', 'Lex Luthor', 'Voldemort']);
print(villains.length); // 3

一个 Map 是一个无序的键值对集合,其中每个键只能出现一次。由于映射关联了一个键来方便检索某个值,因此映射有时也称为关联数组。当你需要通过唯一标识符访问对象时,请使用 Map

var sidekicks = {'Batman': 'Robin',
                 'Superman': 'Lois Lane',
                 'Harry Potter': 'Ron and Hermione'};

除了这些类之外,《dart:core》还包含了 ,这是一个定义了对象集合中常见功能的接口。示例包括能够在集合的每个元素上运行一个函数、应用一个测试、检索一个对象以及确定元素数量。

IterableListSet 实现,并由 Map 用于其键和值。

有关其他类型的集合,请查阅《dart:collection》库。

日期和时间

使用 DateTime 来表示一个时间点,使用 Duration 来表示一个时间段。

您可以使用构造函数或通过解析正确格式的字符串来创建 DateTime 对象。

var now = DateTime.now();
var berlinWallFell = DateTime(1989, 11, 9);
var moonLanding = DateTime.parse("1969-07-20");

通过指定单个时间单位来创建 Duration 对象。

var timeRemaining = const Duration(hours: 56, minutes: 14);

除了DateTimeDuration类之外,dart:core还包含用于测量经过时间的Stopwatch类。

Uri

Uri对象代表统一资源标识符,用于标识资源,例如在网络上。

var dartlang = Uri.parse('http://dartlang.org/');

错误

Error类代表在运行时发生的错误。该类的子类代表特定类型的错误。

其他文档

有关如何使用内建类型的更多信息,请参阅内建类型,这是Dart语言之旅的一部分。

还可以查看dart:core - 数字、集合、字符串等以获取本库中类型的更多覆盖。

Dart语言规范提供了技术细节。

BigInt
任意大的整数值。
bool
关键字truefalse表示本类仅有的两个实例。
Comparable<T>
用于具有内在排序的类型所使用的接口。
DateTime
时间的瞬间,例如1969年7月20日,晚上8:18GMT。
弃用
注解@Deprecated('迁移')标记一个特性为弃用。
double
双精度浮点数。
Duration
一段时间,例如27天、4小时、12分钟和3秒。
Enum
枚举值。
Expando<T extends Object>
Expando允许向对象添加新属性。
Finalizer<T>
可以附加到Dart对象上的终结器。
Function
函数值。
Future<T>
异步计算的结果。
int
整数。
Invocation
在对象上调用成员的表示。
Iterable<E>
值的集合,或“元素”,可以按顺序访问。
Iterator<E>
从对象中逐个获取条目的接口。
List<E>
有长度的可索引对象集合。
Map<K, V>
包含键/值对的集合,您可以使用其关联的键来检索值。
MapEntry<K, V>
表示Map中的条目的键/值对。
Match
在字符串中搜索的结果。
Null
关键字null表示本类的唯一实例。
num
整数或浮点数。
Object
所有Dart对象的基础类,除了null
Pattern
基本字符串搜索的接口。
pragma
对工具的提示。
Record
记录值。
RegExp
正则表达式模式。
RegExpMatch
正则表达式匹配。
RuneIterator
迭代器用于读取 Dart 字符串中的 runes(整数 Unicode 代码点)。
Runes
字符串中的 runes(整数 Unicode 代码点)。
集合<E>
一个对象集合,其中每个对象只能出现一次。
Sink<T>
数据的一个通用目标。
StackTrace
所有堆栈跟踪对象实现的一个接口。
Stopwatch
一个在运行时测量时间的计时器。
Stream<T>
异步数据事件的来源。
String
UTF-16 代码单元的序列。
StringBuffer
用于高效连接字符串的类。
StringSink
Symbol
mirrors、调用和Function.apply使用的不可见名称。
Type
类型的运行时表示。
Uri
一个解析过的 URI,例如 URL。
UriData
访问 data: URI 结构的一种方式。
WeakReference<T extends Object>
对 Dart 对象的一个弱引用。

Extensions

DateTimeCopyWith on DateTime
DateTime 对象添加了 copyWith 方法。
EnumByName on Iterable<T>
通过名称访问枚举值。
EnumName on Enum
获取枚举值的名称。
FutureExtensions on Future<T>
针对future的便利方法。
FutureIterable on Iterable<Future<T>>
FutureRecord2 on (Future<T1>, Future<T2>)
在未来的记录上执行并行操作。
FutureRecord3 on (Future<T1>, Future<T2>, Future<T3>)
在未来的记录上执行并行操作。
FutureRecord4 on (Future<T1>, Future<T2>, Future<T3>, Future<T4>)
在未来的记录上执行并行操作。
FutureRecord5 在 (Future<T1>Future<T2>Future<T3>Future<T4>Future<T5>
在未来的记录上执行并行操作。
FutureRecord6 在 (Future<T1>Future<T2>Future<T3>Future<T4>Future<T5>Future<T6>)
在未来的记录上执行并行操作。
FutureRecord7 在 (Future<T1>Future<T2>Future<T3>Future<T4>Future<T5>Future<T6>Future<T7>)
在未来的记录上执行并行操作。
FutureRecord8 在 (Future<T1>Future<T2>Future<T3>Future<T4>Future<T5>Future<T6>Future<T7>Future<T8>)
在未来的记录上执行并行操作。
FutureRecord9 在 (Future<T1>, Future<T2>, Future<T3>, Future<T4>, Future<T5>, Future<T6>, Future<T7>, Future<T8>, Future<T9>)
在未来的记录上执行并行操作。
IterableExtensionsIterable<T>
可迭代对象的操作。
NullableIterableExtensionsIterable<T?>
带有可空元素的可迭代对象的操作。

常量

deprecated → const Deprecated
标记一个特性为已弃用,直到下一次发布。
override → const Object
对重写接口成员的实例成员的注解。

函数

identical(Object? a, Object? b) bool
检查两个对象引用是否指向同一对象。
identityHashCode(Object? object) int
对象 object 的身份哈希码。
print(Object? object) → void
将一个对象打印到控制台。

类型别名

Comparator<T> = int Function(T a, T b)
通用比较函数的签名。

异常 / 错误

ArgumentError
当函数被传递一个不可接受的参数时抛出的错误。
AssertionError
运行时系统在断言语句失败时抛出的错误。
ConcurrentModificationError
在迭代过程中修改集合时发生的错误。
Error
程序失败时抛出的错误对象。
Exception
所有核心库异常实现的标记接口。
FormatException
当字符串或其他数据格式不符合预期且无法解析或处理时抛出的异常。
索引错误
当索引不在 0..indexable.length-1 范围内时使用的专用 RangeError
整除零异常
NoSuchMethodError
在非法函数或方法调用上抛出的错误。
OutOfMemoryError
平台在内存不足的情况下可以使用的错误。
ParallelWaitError<V, E>
在等待多个未来时抛出,当某些未来有错误。
RangeError
由于参数值不在接受的范围内而抛出的错误。
StackOverflowError
平台在发生堆栈溢出时可以使用的错误。
StateError
操作不符合当前对象的状态。
TypeError
运行时系统在动态类型错误发生时抛出的错误。
UnimplementedError
未实现的操作会抛出此异常。
UnsupportedError
对象不允许的操作。