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 是一个有顺序的对象集合,具有长度。列表有时也称为数组。当需要通过索引访问对象时,请使用 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 接口,它定义了在对象集合中常见的功能。例如,可以在集合的每个元素上运行一个函数、对每个元素应用一个测试、获取一个对象以及确定元素数量。
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 语言规范 Dart Language Specification 提供了技术细节。
类
- BigInt
- 任意大的整数值。
- bool
- 保留字
true
和false
表示该类唯一的两个实例。 -
Comparable<
T> - 用于具有固有排序的类型界面的接口。
- DateTime
- 一个时间点,例如 1969 年 7 月 20 日,晚上 8:18 GMT。
- 已弃用
- 注解
@Deprecated('migration')
标记一个特性为已弃用。 - 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
- 除了
null
之外,所有 Dart 对象的基类。 - Pattern
- 基本字符串搜索的接口。
- pragma
- 对工具的提示。
- Record
- 记录值。
- 正则表达式
- 正则表达式模式。
- 正则表达式匹配
- 正则表达式匹配结果。
- RuneIterator
- 迭代器,用于读取Dart字符串的整数Unicode码点。
- Runes
- String的整数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对象的弱引用。
扩展
- 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> ) - 对future记录的并行操作。
-
FutureRecord3 on (Future<
T1> , Future<T2> , Future<T3> ) - 对future记录的并行操作。
-
FutureRecord4 在 (Future<
T1> , Future<T2> , Future<T3> , Future<T4> ) 时触发 - 对future记录的并行操作。
-
FutureRecord5 在 (Future<
T1> , Future<T2> , Future<T3> , Future<T4> , Future<T5> ) 时触发 - 对future记录的并行操作。
-
FutureRecord6 在 (Future<
T1> , Future<T2> , Future<T3> , Future<T4> , Future<T5> , Future<T6> ) 时触发 - 对future记录的并行操作。
-
FutureRecord7 在 (Future<
T1> , Future<T2> , Future<T3> , Future<T4> , Future<T5> , Future<T6> , Future<T7> ) 时触发 - 对future记录的并行操作。
-
FutureRecord8 在 (Future<
T1> , Future<T2> , Future<T3> , Future<T4> , Future<T5> , Future<T6> , Future<T7> , Future<T8> ) - 对future记录的并行操作。
-
FutureRecord9 在 (Future<
T1> , Future<T2> , Future<T3> , Future<T4> , Future<T5> , Future<T6> , Future<T7> , Future<T8> , Future<T9> ) - 对future记录的并行操作。
-
IterableExtensions 在 Iterable<
T> - 迭代器的操作。
-
NullableIterableExtensions 在 Iterable<
T?> - 对具有可空元素的迭代器的操作。
常量
- deprecated → const Deprecated
- 标记一个特性为 Deprecated 直到下一个版本。
- override → const Object
- 在覆盖接口成员的实例成员上的注解。
函数
类型别名
-
Comparator<
T> = int Function(T a, T b) - 通用比较函数的签名。
异常/错误
- ArgumentError
- 当函数被传递不可接受的参数时抛出的错误。
- AssertionError
- 当运行时系统中的 assert 语句失败时抛出的错误。
- ConcurrentModificationError
- 在迭代期间修改集合时发生错误。
- Error
- 程序失败时抛出的错误对象。
- Exception
- 所有核心库异常实现的一个标记接口。
- FormatException
- 当字符串或其他数据没有预期的格式且无法解析或处理时抛出的异常。
- IndexError
- 当索引不在
0..indexable.length-1
范围内时使用的专用 RangeError。 - IntegerDivisionByZeroException
- NoSuchMethodError
- 在无效的函数或方法调用时抛出的错误。
- OutOfMemoryError
- 平台在内存短缺情况下可以使用的一种错误。
-
ParallelWaitError<
V, E> - 当等待多个未来时,其中一些有错误时抛出的错误。
- RangeError
- 由于参数值超出接受范围而抛出的错误。
- StackOverflowError
- 平台在堆栈溢出情况下可以使用的一种错误。
- StateError
- 操作不允许对象的当前状态。
- TypeError
- 运行时系统在发生动态类型错误时抛出的错误。
- UnimplementedError
- 未实现的操作抛出的错误。
- UnsupportedError
- 操作不允许对象。