国产编程语言 MoonBit 最新动态来啦!目前本地 VS Code 插件可以自动执行 `moon check --watch`

142 天前
 Moonbit

MoonBit 更新

1. 添加 Debug 接口

interface Debug {
  debug_write(Self, Buffer)
}

以及debug[X: Debug](X) 函数。并且给内建类型实现了 Debug 接口。和之前的 Show 接口相比,Debug 的性能更好,而且会正确地在类型为 String 的值的两侧加上双引号。在输出调试信息时,我们鼓励用户用 Debug 代替 Show,用 debug 代替 println。未来 Showprintln 可能会被废弃或发生 API 上的不兼容变化。

Debug 的使用示例:

struct T[X} {
  s: String
  x: X
} derive (Debug)

fn init {
  let t = { s : "hello", x: "world" }
  debug(t) // Output: {s: "hello", x: "world"}
}

2. while 中添加迭代表达式,在循环的每次迭代之后执行

var i = 0
while i < len, i = i + 1 {
  do_something_with(i)
}

上面的例子粗略地等价于:

var i = 0
while i < len {
  do_something_with(i)  
  i = i + 1
}

continue 语句不会跳过迭代表达式。因此迭代表达式尤其适合用于写类似 for的循环。例如,下面的程序会对所有小于 10 的奇数进行一些操作(而非死循环):

var i = 0
while i < 10, i = i + 1 {
  if i % 2 == 0 {
    continue
  }
  do_something_with(i)
}

3. 移除id := expr语法。

现在只能使用let id = expr声明不可变变量。

修改前

修改后

4. 使用内置类型 Bytes 重新实现速度更快的to_string 方法,

使用内置类型 Bytes 重新实现速度更快的 IntInt64to_string 方法,替代之前使用字符串拼接的实现

5. 添加 String::default

fn init {
  let s = String::default()
  debug(s) // Output: ""
}

IDE 更新

1. 本地 VS Code 插件可以自动执行 moon check --watch

本地 VS Code 插件可以自动执行 moon check --watch ,现在不再需要手动执行。

2. 添加对方法的提示

修改前

修改后

3. 优化诸多类型报错信息

590 次点击
所在节点    编程
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1001398

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX