Icon Link属性

Sway 编译器支持一系列属性,用于执行各种有用的操作,用于构建、测试和文档化 Sway 程序。以下是所有可用属性的列表:

Icon LinkAllow

#[allow(...)] 属性覆盖检查,以便违规行为不会报告。以下检查可以禁用:

  • #[allow(dead_code)] 禁用死代码检查;
  • #[allow(deprecated)] 禁用对已弃用的结构、函数和其他项的使用检查。

Icon LinkDoc

#[doc(..)] 属性指定文档。

以三个斜杠 /// 开头的行文档注释被解释为特殊语法的文档属性。也就是说,它们等效于在注释体周围写上 #[doc("...")],即 /// Foo 变为 #[doc("Foo")]

//! 开头的行注释是文档注释,适用于它们所在源文件的模块。也就是说,它们等效于在注释体周围写上 #![doc("...")]//! 模块级别的文档注释应位于 Sway 文件的顶部。

文档可以使用 forc doc 从文档属性中生成。

Icon LinkInline

内联属性建议将标记的函数的副本放置在调用者中,而不是在定义它的地方生成调用函数的代码。

Icon InfoCircle

注意:Sway 编译器根据内部启发式方法自动内联函数。不正确地内联函数可能会使程序变慢,因此应谨慎使用此属性。

#[inline(never)] 属性 建议 永远不要执行内联扩展。

#[inline(always)] 属性 建议 始终执行内联扩展。

Icon InfoCircle

注意#[inline(..)] 的每种形式都是一个提示,没有任何对于语言在调用者中放置标记的函数的要求。

Icon LinkPayable

缺少 #[payable] 意味着该方法是非可支付的。当调用一个非可支付的 ABI 方法时,如果调用时转发的硬币数量不能保证为零,则编译器会发出错误。请注意,这仅是一个编译时检查,不会产生任何运行时成本。

Icon LinkStorage

在 Sway 中,函数默认为纯函数,但可以通过 storage 函数属性选择为不纯函数。storage 属性可能带有 read 和/或 write 参数,指示函数需要哪种类型的访问。

#[storage(read)] 属性表示函数需要对存储进行读取访问。

#[storage(write)] 属性表示函数需要对存储进行写入访问。

更多详情请参阅 Purity

Icon LinkTest

#[test] 属性标记一个函数作为测试执行。

#[test(should_revert)] 属性标记一个应该回滚的测试函数。

更多详情请参阅 Unit Testing

Icon LinkDeprecated

#[deprecated] 属性标记一个项目为已弃用,并使编译器对已弃用项目的每次使用发出警告。可以使用 #[allow(deprecated)] 禁用此警告。

可以使用 #[deprecated(note = "your message")] 来改进警告消息。

Icon LinkFallback

#[fallback] 属性使编译器将标记的函数用作合约调用的回退函数,这意味着当调用合约并且合约选择失败时,将调用回退函数。