dart:core 库
为每个 Dart 程序提供内置的类型、集合和其他核心功能。
此库将自动导入。
此库中的一些类,如 String 和 num,支持 Dart 的内置数据类型。其他类,如 List 和 Map,提供了管理对象集合的数据结构。还有其他类代表常用的数据类型,如 URI、日期和时间以及错误。
数字和布尔值
int 和 double 分别支持 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; ...');
String 和 StringBuffer 类实现了字符串分割、连接和其他字符串操作功能。
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》库提供了基本集合,例如 List、Map 和 Set。
一个 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》还包含了 ,这是一个定义了对象集合中常见功能的接口。示例包括能够在集合的每个元素上运行一个函数、应用一个测试、检索一个对象以及确定元素数量。
Iterable 由 List 和 Set 实现,并由 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);
除了DateTime和Duration类之外,dart:core
还包含用于测量经过时间的Stopwatch类。
Uri
Uri对象代表统一资源标识符,用于标识资源,例如在网络上。
var dartlang = Uri.parse('http://dartlang.org/');
错误
Error类代表在运行时发生的错误。该类的子类代表特定类型的错误。
其他文档
有关如何使用内建类型的更多信息,请参阅内建类型,这是Dart语言之旅的一部分。
还可以查看dart:core - 数字、集合、字符串等以获取本库中类型的更多覆盖。
Dart语言规范提供了技术细节。
类
- BigInt
- 任意大的整数值。
- bool
- 关键字
true
和false
表示本类仅有的两个实例。 -
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> ) - 在未来的记录上执行并行操作。
-
IterableExtensions 在 Iterable<
T> - 可迭代对象的操作。
-
NullableIterableExtensions 在 Iterable<
T?> - 带有可空元素的可迭代对象的操作。
常量
- deprecated → const Deprecated
- 标记一个特性为已弃用,直到下一次发布。
- override → const Object
- 对重写接口成员的实例成员的注解。
函数
类型别名
-
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
- 对象不允许的操作。