Sway 与 Rust 有很多相似之处,尤其是其语法。因为它们如此相似,当它们有所不同时,您可能会感到惊讶或措手不及。本页面旨在从高层次上概述您可能会遇到的一些语法“坑”。
在 Rust 中,枚举通常采用三种形式之一:unit 变体,没有内部数据,struct 变体,包含命名字段,以及 tuple 变体,其中包含一个元组数据。如果您对这些术语不熟悉,这是它们的样子:
// note to those skimming the docs: this is Rust syntax! Not Sway! Don't copy/paste this into a Sway program.
enum Foo {
UnitVariant,
TupleVariant(u32, u64, bool),
StructVariant {
field_one: bool,
field_two: bool
}
}
在 Sway 中,枚举被简化了。枚举变体必须全部指定精确的一个类型。这个类型表示它们的内部数据。实际上,这与 Rust 提供的内容是同构的,但语法不同。您可以在下面看到具有 Sway 语法的上述枚举:
// This is equivalent Sway syntax for the above Rust enum.
enum Foo {
UnitVariant: (),
TupleVariant: (u32, u64, bool),
StructVariant: MyStruct,
}
struct MyStruct {
field_one: bool,
field_two: bool,
}