数组下标从1开始

type MyArray[T] Array[T] derive(Show, Debug)

fn op_get[T](self : MyArray[T], idx : Int) -> T {
  let MyArray(arr) = self
  arr[idx - 1]
}


fn init {
  let myarr : MyArray[String] = MyArray(["first", "second"])
  let fst = myarr[1]
  let snd = myarr[2]
  println("[1] = \(fst) [2] = \(snd)")
}

type定义的新类型是零开销的,运行时表示和array一样。

1 个赞

还要 op_set 吧?文档里好像没看到 op_set 示例,在线例程好像也没。

是的,op_set的文档没说太多https://www.moonbitlang.com/docs/syntax#operator-overloading

我之前写了个robinhood hashtable,op_get和op_set为了支持自定义kv容器是比较自由的,类型什么的都没什么限制:Moonbit Lang