本页面介绍了 Sway 标准库提供的核心数据类型。这些类型构成了 Sway 应用程序和合约中数据操作和管理的基础。有关用于区块链状态持久化的存储类型信息,请参阅 集合和存储。
Sway 编程语言包括内置基本类型和标准库中实现的复合类型。这些类型为在 Fuel 平台上创建健壮高效的程序提供了基本构建块。
来源: sway-lib-std/src/u128.sw sway-lib-std/src/bytes.sw sway-lib-std/src/vec.sw sway-lib-std/src/option.sw sway-lib-std/src/result.sw sway-lib-std/src/string.sw sway-lib-std/src/prelude.sw
Option<T> 类型表示一个可选值——它要么是包含 T 类型值的 Some(T),要么是表示缺少值的 None。此类型在 Sway 代码中常用于处理可空值,而无需引入 null 的概念。
关键方法
is_some() - 如果选项是 Some 变体,则返回 trueis_none() - 如果选项是 None 变体,则返回 trueunwrap() - 返回包含的值,如果为 None 则回滚unwrap_or(default) - 返回包含的值或提供的默认值expect(msg) - 类似于 unwrap,但带有自定义错误消息ok_or(err) - 将 Option<T> 转换为 Result<T, E>使用示例
来源: sway-lib-std/src/option.sw84-90 sway-lib-std/src/option.sw132-137 sway-lib-std/src/option.sw156-161 sway-lib-std/src/option.sw196-201
Result<T, E> 类型表示成功(Ok(T))或失败(Err(E))。成功时包含 T 类型的值,失败时包含 E 类型的错误。此类型在 Sway 代码中用于错误处理,尤其是在与区块链交互时。
关键方法
is_ok() - 如果结果是 Ok 变体,则返回 trueis_err() - 如果结果是 Err 变体,则返回 trueunwrap() - 返回包含的 Ok 值,如果为 Err 则回滚unwrap_or(default) - 返回包含的 Ok 值或提供的默认值expect(msg) - 类似于 unwrap,但带有自定义错误消息使用示例
来源: sway-lib-std/src/result.sw65-70 sway-lib-std/src/result.sw101-106 sway-lib-std/src/result.sw130-135 sway-lib-std/src/result.sw169-174 sway-lib-std/src/result.sw202-207
U128 类型提供了 128 位无符号整数的实现,内部表示为两个 64 位组件:(upper, lower),其中值等于 (upper << 64) + lower。
主要功能
使用示例
来源: sway-lib-std/src/u128.sw20-30 sway-lib-std/src/u128.sw290-295 sway-lib-std/src/u128.sw325-330 sway-lib-std/src/u128.sw581-608 sway-lib-std/src/u128.sw634-654
Vec<T> 类型是一个通用的、堆分配的向量,可以在运行时增长或收缩。它提供了一个动态长度的 T 类型值的连续数组。
主要功能
使用示例
来源: sway-lib-std/src/vec.sw147-151 sway-lib-std/src/vec.sw175-180 sway-lib-std/src/vec.sw215-220 sway-lib-std/src/vec.sw240-255 sway-lib-std/src/vec.sw325-337
Bytes 类型是一个专门用于处理原始字节(u8 值)的集合。它在处理二进制数据、加密操作或低级内存操作时特别有用。
与 Vec<T> 类似,但专门用于 u8 值,Bytes 提供了用于以下操作的方法:
使用示例
来源: sway-lib-std/src/bytes.sw91-96 sway-lib-std/src/bytes.sw120-125 sway-lib-std/src/bytes.sw158-163 sway-lib-std/src/bytes.sw185-200 sway-lib-std/src/bytes.sw352-379
String 类型表示一个 UTF-8 编码、可增长的字符串。它建立在 Bytes 类型之上,并提供字符串特有的功能。
主要功能
使用示例
重要提示:如实现注释中所述,String 类型被设计为与 UTF-8 向前兼容,但在适当的 Unicode 支持实现之前,其变异功能目前受到限制。
来源: sway-lib-std/src/string.sw14-24 sway-lib-std/src/string.sw46-48 sway-lib-std/src/string.sw119-123 sway-lib-std/src/string.sw143-151 sway-lib-std/src/string.sw191-194
Sway 标准库提供了处理错误和断言的一致机制
Sway 提供了几种处理错误和断言条件的方法
断言 - 用于检查应始终为 true 的条件
assert(condition) - 如果条件为 false,则回滚assert_eq(v1, v2) - 如果值不相等,则回滚assert_ne(v1, v2) - 如果值相等,则回滚回滚函数 - 用于显式错误处理
require(condition, value) - 检查条件,记录值,如果为 false 则回滚revert(code) - 无条件地带代码回滚revert_with_log(value) - 记录一个值并回滚这些函数使用预定义的错误信号,以在整个平台中提供一致的错误报告。
使用示例
来源: sway-lib-std/src/assert.sw35-39 sway-lib-std/src/assert.sw62-71 sway-lib-std/src/revert.sw34-36 sway-lib-std/src/revert.sw58-64 sway-lib-std/src/error_signals.sw1-45
Sway 的标准库实现了类型转换的一致模式
From<T> 和 Into<T> 特性提供了类型之间不可失败的转换
TryFrom<T> 和 TryInto<T> 特性提供了可能失败的可失败转换
许多核心类型实现了这些转换特性,以确保在整个标准库中的无缝互操作性。
来源: sway-lib-std/src/u128.sw32-54 sway-lib-std/src/u128.sw938-976 sway-lib-std/src/bytes.sw996-1032
Sway 标准库中的核心类型为在 Fuel 平台上构建应用程序和合约提供了坚实的基础。
通过理解这些基本类型及其操作,开发人员可以编写更高效、更可靠的代码。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(3afc5c)