Skip to content

属性

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")]