E4065

E4065#

重载操作符应接受正确数量的参数。

你可以参考 操作符重载 部分,获取可以重载的操作符列表,下面是每个操作符应该接受的参数数量列表:

运算符

#alias 的值

参数数量

_[_]

"_[_]"

2

_[_] = _

"_[_]=_"

3

_[_:_]

"_[_:_]"

3

错误示例#

///|
struct A(Array[Int])

///|
#alias("_[_]")
fn A::get(self : A, idx : Int, offset? : Int) -> Int {
  //  ^~~~~~
  // Error: overloaded indexing should accept 2 arguments, but it accepts 3 arguments
  let idx = match offset {
    None => idx
    Some(offset) => idx + offset
  }
  return self.0[idx]
}

建议#

请让带别名的方法接受该运算符所需数量的参数。

///|
struct A(Array[Int])

///|
#alias("_[_]")
fn A::get(self : A, idx : Int) -> Int {
  return self.0[idx]
}