E1039#
方法名与另一个定义冲突。
备注
使用语法 fn f(self : T, ..)
声明的方法将在未来提升为常规函数,使用 fn T::f(..)
声明方法以避免名称冲突。
错误示例#
type A Int
fn f() -> Int {
3
}
fn f(self : A) -> Int {
self._
}
fn main {
println(f())
println(A(3).f())
}
建议#
你可以将方法定义为 A::f
:
fn T::f(self : A) -> Int {
self._
}
但是,使用 T::
前缀定义方法将使其无法作为常规函数调用。如果你希望将方法作为常规函数调用,那么你必须重命名方法名或常规函数名以解决名称冲突。
fn f_(self : A) -> Int {
self._
}
fn main {
println(f_(A(3)))
}