Moonbit每周工作动态-0807

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也会自动把类型标注上,比如: