struct T {
x: Int
y: Int
} derive(IEq, ICompare, IDebug, IDefault)
感觉这样相当于偏旁部首,也起到注释的作用。
struct T {
x: Int
y: Int
} derive(IEq, ICompare, IDebug, IDefault)
感觉这样相当于偏旁部首,也起到注释的作用。
C# 就是这么做的。好处就是你说的,可识别度更高。
不过 C# 里,interface 是 pure abstract class,还是一个 class,所以需要和普通的 class 通过命名规范区分开。但在我们这里,trait 和 type 一开始就是两种完全独立的构造了,可能出现的位置也不一样(trait:类型参数列表、derive
。type:各种类型标注),所以通过命名规范区分 trait 和 type 的需求不那么强,就选择了更类似的语言(Rust、Haskell)的做法,不给 trait 加特殊的命名规范
请问一下,moonbit 将来是否会实现类似于 rust 中的 impl Trait 的功能?
这样的功能 trait 和 type 出现的位置是一样的
这周我们刚刚加入了 trait object,类似 Rust 的 dyn
,但没有关键字,所以 trait 可以直接拿来做类型了。但语义上 trait 和 type 还是两种独立的东西。比如在类型参数的约束里写普通类型会直接报错