方法
在 MoonBit 里,方法是关联到某个类型上的顶层函数。可以用 fn T::method_name(..) -> ..来定义方法,定义出的方法会被关联到类型 T 上。在方法的签名中,可以用 Self 来指代 T,这在 T 很长时可以简化签名。
可以用下列两种方式来调用方法:
- 所有方法都可以用 T::method_name(..)的形式调用
- 方法也可以用 x.method_name(..)的形式调用,假设x的类型是T,这种写法等价于T::method_name(x, ..)
之前的章节中已经出现了很多方法,例如 Array::make(..) 和 array.length()。
方法也支持部分应用(partial application),x.f(_) 和 _.f(..) 都是合法的匿名函数。
struct MyInt (Int) 
fn MyInt::increment(self : Self) -> Self {
  let MyInt(x) = self
  MyInt(x + 1)
}
fn main {
  let x = MyInt(39)
  let y = x.increment() // 用 `.` 语法调用方法
  let z = MyInt::increment(y) // 也可以用 `T::method_name` 调用
  println(z.0)
}