V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
moonbitlang
V2EX  ›  推广

简化 enum 构造器使用、添加 Ulnt64 内建类型……标准库、工具链等多个板块持续更新

  •  
  •   moonbitlang · 150 天前 · 245 次点击
    这是一个创建于 150 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 和覆盖率工具适配错误类型和错误处理

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1146 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 18:46 · PVG 02:46 · LAX 10:46 · JFK 13:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.