Public read-only types
Moonbit增加 pub(readonly)
用于表达公开只读类型的数据结构,即如果一个数据类型被定义为 readonly ,在其他包中,只能对这类数据进行模式匹配,而不能用构造器构造数据。
比如我们在package1中定义了 readonly 的 enum:
// Package 1
pub(readonly) enum T {
Ctor(Int)
}
那么在另外一个包 package2中:
// Package 2
func f(x: T) {
match x { Ctor(_) => () } // OK
}
func init {
let c = T::Ctor(1) // Error: Cannot create values of the readonly type T!
}
Unicode标识符支持
Moonbit支持类型名字、函数名字以及变量名字采用Unicode,当前支持 Latin-1、CJK 三国文字和 Basic emoji。
比如:
func 😀(self : Int) {
self.print()
}
func init {
🤣 := 3
🤣.😀()
}
Docstring 功能
Moonbit支持通过 ///
符号实现docstring,语法如下:
-
@param
: 用于描述函数参数的类型和作用 -
@return
: 用于描述函数的返回类型和作用
比如:
/// Just add 100 to a number
///
/// @param {Int} The number we wanna add to 100
/// @return {Int} The new number
pub func add100(a:Int) -> Int {
return a + 100
}
那么docstring效果如下:
IDE 支持嵌入提示(Inlay Hint)
为了提高代码可读性,现在就算没有显式把类型写出来,IDE也会自动把类型标注上,比如: