MoonBit 周报 Vol.47:enum构造器简化,多个板块持续更新!

weekly 2024-07-01

MoonBit 更新

  • 在没有歧义的情况下,enum构造器的使用可以省略类型前缀。比如现在可以直接使用 Some(42) 而不需要写 Option::Some(42);如果当前环境中有两个类型 T1T2 都定义了某个构造器 C,那么在使用的时候则需要通过上下文中的类型或者类型前缀指明是 T1::C 还是 T2::C,否则编译器会报错

  • 添加 UInt64 内建类型,支持加、减、乘、除、模以及 UInt64/Int64 的互相转换。

fn main {
  let a = 0UL
  let b : UInt64 = 1UL
  println(a - b) //18446744073709551615
}
  • !! 后缀的语义修改为捕获函数调用中可能出现的错误,并返回 Result 类型,比如
fn f() -> Int!String { .. }
fn main {
  let res = f()!! // res: Result[Int, String]
  println(res)
}
  • moon test 中支持使用错误类型表示测试失败的情况,比如
fn eq[T : Debug + Eq](a : T, b : T, ~loc : SourceLoc = _) -> Unit!String {
  if a != b {
    let a = debug_string(a)
    let b = debug_string(b)
    raise ("FAILED: \(loc) `\(a) == \(b)`")
  }
}

test "test_eq" {
  eq(1+2, 3)!
}
  • 标准库中的 I/O 相关操作只保留了 println,其他操作将会在 io package 中提供

标准库更新

  • 统一 T::new()/T::make() 等创建容器对象的函数风格,移除了 T::with_capacity

  • 原先的 iteriteri 重命名为 eacheachiiter_reviter_revi 重命名为 each_reveachi_rev

  • as_iter 重命名为iter

构建系统更新

  • 预计将于本周开源

工具链更新

  • 优化调试体验,现在⽤户可在 JavaScript Debug Terminal 中执⾏ moon run --target js --debug 进行调试

  • moon info 和覆盖率工具适配错误类型和错误处理

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值