E1039

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)))
}