属性
Sway 编译器支持一系列属性,这些属性可执行各种操作,这些操作对于构建、测试和记录 Sway 程序非常有用。以下是所有可用属性的列表:
允许
该 #[allow(...)]
属性会覆盖检查,因此违规行为不会被报告。可以禁用以下检查:
#[allow(dead_code)]
禁用死代码检查;#[allow(deprecated)]
禁用对已弃用的结构、函数和其他项目的使用情况的检查。
文件
这 #[doc(..)]
属性指定文档
以三个斜杠开头的行文档注释 ///
, 被解释为文档属性的特殊语法。也就是说,它们相当于在 #[doc("...")]
注释正文周围书写,即 /// Foo
变成 #[doc("Foo")]
以 开头的行注释 //!
是适用于其所在源文件模块的文档注释。也就是说,它们相当于在 #![doc("...")]
注释正文周围书写。 //!
模块级文档注释应位于 Sway 文件的顶部。
可以使用 doc 属性生成文档 forc doc
.
排队
inline 属性建议将被赋予属性的函数的副本放在调用者中,而不是在定义该函数的地方生成代码来调用它。
注意: Sway 编译器会根据内部启发式方法自动内联函数。错误地内联函数会使程序变慢,因此应谨慎使用此属性。
这 #[inline(never)]
属性 表明 永远不应执行内联扩展。
这#[inline(always)]
属性 表明 应始终执行内联扩展。
注意:
#[inline(..)]
每种形式都是一个提示,对语言没有 要求,将属性函数的副本放置在调用者中。
应付
缺少 #[应付]
意味着该方法不可应付。 在调用不可支付的ABI方法时,如果调用转发的代币数量不能保证为零,编译器将发出一个错误。 注意,这是严格的编译时检查,不会产生任何运行时成本。
贮存
在 Sway 中,函数默认为纯函数,但可以通过 storage
函数属性选择不纯函数。该 storage
属性可以采用 read
和/或 write
参数来指示函数需要哪种类型的访问。
该 #[storage(read)]
属性表明某个函数需要对存储进行读取访问。
该 #[storage(write)]
属性表明某个函数需要对存储进行写访问。
更多细节请参阅 纯度.
测试
该 #[test]
属性标记要作为测试执行的函数。
该 #[test(should_revert)]
属性将要执行的函数标记为应恢复的测试。
更多细节请参阅 单元测试.
已弃用
此 #[deprecated]
属性将某项标记为已弃用,并使编译器在每次使用已弃用项时发出警告。可以使用 禁用此警告 #[allow(deprecated)]
.
可以使用以下方法改进警告信息 #[deprecated(note = "your message")]