T? 来表示Option[T]struct Cell[T] {
val: T
next: Cell[T]?
}
fn f(x : Cell[T]?) -> Unit { ... }
相当于
struct Cell[T] {
val: T
next: Option[Cell[T]]
}
fn f(x : Option[Cell[T]]) -> Unit { ... }
旧的Option[T]仍然兼容,但是推荐使用更简短的新语法。moonfmt 也会将Option[T]格式化为T?。
Iter[T]不需要@iter.前缀pub fn any[T](xs : Iter[T], predicate : (T) -> Bool) -> Bool {
// ^不需要 @iter.
match xs.find_first(predicate) {
None => false
Some(_) => true
}
}
Stack包被移入moonbitlang/x。to_list和from_list函数。对于数据结构间转换和中间的表示结构,推荐使用Iter[T]与Array[T]。Option[Bool], Option[Char], Option[Byte], Option[Unit] 这些类型使用 32 位整数表示,其中 None 对应的值为 -1, Some(x) 对应的值为 x; Option[Int] 类型在 wasm 后端使用 64 位整数表示,其中 None 对应的值为 0x1_0000_0000, Some(x) 对应的值为 x, Option[Int]在 JavaScript 后端使用 int | undefined 表示,其中 undefined 表示 Noneabort行为变更spectest.print_char的依赖,正在重构错误输出功能。abort将不会利用spectest.print_char打印错误信息,行为与panic相同,等待功能进一步完善。