如下的函数无法通过编译:
fn flat3[U, V, W](self : ((U, V), W)) -> (U, V, W) {
(self.0.0, self.0.1, self.1)
}
报错信息:
[E4059] Cannot define method flat3 for foreign type Tuple2
看不太懂为什么这个情况下不可以通过编译
如下的函数无法通过编译:
fn flat3[U, V, W](self : ((U, V), W)) -> (U, V, W) {
(self.0.0, self.0.1, self.1)
}
报错信息:
[E4059] Cannot define method flat3 for foreign type Tuple2
看不太懂为什么这个情况下不可以通过编译
tuple 是内建的类型,只有定义类型的包可以给类型定义新的方法。所以如果想要给 tuple 加方法,需要加到 moonbitlang/core/builtin
或者 moonbitlang/core/tuple
里(repo)。
上面这个限制的动机是,如果允许给别人的类型定义新方法,两个毫无关系的包在一起用就有可能出方法冲突。