方法
在 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(..)
都是合法的匿名函数。
type MyInt Int derive(Show)
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)
}