MoonBit 语言导览 MoonBit

元组结构体

元组结构体类似于只有一个构造函数的枚举,构造函数与类型同名。它们可以使用构造函数创建,并通过索引 字段(如 .0.1)访问,就像常规元组一样。

与常规元组不同,即使字段结构相同,元组结构体也是不同的类型。这种类型安全性可以防止概念上不同的数据 被意外混用。

与常规结构体相比,MoonBit 编译器会优化元组结构体以避免额外的装箱开销。例如,在大多数情况下, struct Point(Int)struct Point { internal: Int } 更高效。

你也可以使用模式匹配从元组结构体中提取值。

struct UserName(String)
struct Position(Int, Int)

fn main {
  let user : UserName = UserName("alice")
  let pos : Position = Position(1, 2)

  // 错误: (Int, Int) 和 Position 不是同一个类型
  // let pair : (Int, Int) = pos

  println(user.0)
  println(pos.0)
  println(pos.1)

  // 用模式匹配提取元组结构体内的值
  let UserName(name) = user
  let Position(x, y) = pos
}