本地方法
在前面的课程中你已经学习了如何为类型定义方法。被标记为 pub 的方法必须定义在与该类型相同的包中,
这一限制只适用于公开方法。
有时你可能希望为来自其他包的类型添加额外行为。MoonBit 允许你为任意类型添加本地
(非 pub)方法。它们只在定义所在的包内可见,因此不同的包可以安全地为同一个类型添加各自的内部
辅助方法而不会发生冲突。
///|
/// 使用本地方法 `add_range` 扩展 `@sorted_set.SortedSet` 类型。
///
/// `SortedSet` 定义在 `moonbitlang/core/sorted_set`,你可以在
/// https://mooncakes.io/docs/moonbitlang/core/sorted_set 查看 API 文档。
fn @sorted_set.SortedSet::add_range(self : Self[Int], l : Int, r : Int) -> Unit {
  for i in l..=r {
    self.add(i)
  }
}
///|
fn main {
  let set = @sorted_set.new()
  set.add_range(1, 10)
  set.add_range(15, 20)
  println(set)
}