国产编程语言MoonBit添加问号操作符

news/2024/7/16 8:14:07 标签: wasm, 云计算, ide, 开发语言

MoonBit更新

01. 添加内置类型 Result

enum Result[T, E] {
  Ok(T)
  Err(E)
}

02. 添加问号操作符

新增了问号操作符,用于简化错误处理:

fn may_fail() -> Option[Int] { ... }

fn compose_may_fail() -> Option[String] {
  let x = may_fail()?
  let y = may_fail()?.lsr(3)
  Some ((x + y).to_string())
}

问号操作符的语义是:如果 t?t 的结果是 None,那么 t? 相当于 return None(直接跳出当前函数)。如果 t?t 的结果是 Some(x),那么 t? 相当于 x。除了 Option 类型,问号操作符也能作用在 Result 类型上:

fn may_error() -> Result[Int, String] { ... }

fn compose_may_error() -> Result[Int, String] {
  let x = may_error()?
  let y = may_error()?
  if y == 0 {
    return Err("divide by zero")
  }
  Ok (x / y)
}

03. 将关键字 interface 修改为 trait

根据社区的反馈,将关键字 interface 修改为 trait,暂时保留对关键字i nterface的兼容:

在这里插入图片描述

04. 修改死代码消除的逻辑

对于顶层 let 在没有被使用的情况下,一律视作可以被删除,无论其是否有副作用。比如,

let a = 1       // will be removed
let b: T = f(a) // will be removed
fn init {
  ..            // a and b are not used
}

如果函数 f 会触发副作用,需要把 f(a) 这个调用放到 fn init { .. } 中以避免其被删除

05. 修复代码格式化工具不能正确处理中文注释的问题

06.修复不能正确处理中文全局标识符的问题

IDE更新

01. 添加是否自动启动 moon check 的选项

vscode用户可以在settings.json中使用moonbit.autoMoonCheck.enable控制是否自动启动moon check

或者你也可以在设置中搜索MoonBit:

在这里插入图片描述

02. 修复 derive(Show) 误报错误的问题

修复前
在这里插入图片描述

修复后
在这里插入图片描述

构建系统更新

01. 添加 moon doc 命令

添加 moon doc 命令,用于生成和预览文档。moon doc --serve会根据代码中的markdown注释生成文档,并在本地启动网页服务器。访问输出的链接即可查看效果。
在这里插入图片描述

在这里插入图片描述


http://www.niftyadmin.cn/n/5286606.html

相关文章

小白的实验室服务器深度学习环境配置指南

安装nvidia 本文在ubuntu server 22.04上实验成功,其他版本仅供参考 注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用 查看是否安装了gcc gcc -v若没…

Scala(一)基本类型

Scala语言快速入门(基本类型) 一、Linux和Windows环境安装 这部分跳过,直接使用IDEA进行搭建,和其他编程语言配置差不多 二、HelloWorld 1.object表示一个伴生对象(相当于一个对象)2.HelloWorld是对象的…

VR全景对普通人的生活有哪些好处?

许多普通人对VR全景还全然没有概念,这是因为VR全景虽然一直在快速发展,但目前为止也不过几年而已,但这发展的几年同样为我们普通人的生活带来了切实的改变和便利。VR全景技术为人们带来了沉浸感和真实感的体验,让我们感受到迥异于…

windows搭建MySQL 8.25主从配置

1.本次搭建的版本 mysql-8.0.25-win-x64 2.在解压完成后的文件内并没有对应的my.ini的配置文件这个my.ini是需要的主配置文件需要自行创建。 注:安装路径及数据存放路径需根据实际安装情况进行修改(其它配置信息可结合实际情况进行修改) 3.在…

Java@RequestParam注解和@RequestBody注解接收参数

目录 Java后端接收数据 第一章、后端不写任何注解情况下接收参数1.1)后端不写注解postman发出get请求1.2)后端不写注解postman发出post请求 第二章、后端写RequestParam注解接收参数2.1)postman发出post请求2.2)postman发出get请求…

鸿蒙项目二—— 注册和登录

此部分和上篇文章是连续剧 ,如果需要,请查看 一、注册 import http from ohos.net.http; Entry Component struct Reg {// 定义数据:State username: string "";State userpass: string "";State userpass2: string …

Java中的内部类、枚举

内部类、枚举 内部类成员内部类静态内部类局部内部类(不重要)匿名内部类(重要)什么是匿名内部类使用场景 枚举类什么是枚举类枚举类的特点枚举类提供的一些额外API拓展:抽象枚举使用枚举类实现单例设计模式 常见应用场…

Java 实现 HTTP 请求的 4 种方式

在日常工作和学习中,有很多地方都需要发送HTTP请求,本文以Java为例,总结发送HTTP请求的多种方式 使用 HttpURLConnection 类 HttpURLConnection 是 Java 标准库中用来发送 HTTP 请求和接收 HTTP 响应的类。 它预先定义了一些方法&#xff…