本周更新: MoonBit 替换 Array 实现、键值对增加模式匹配支持

190 天前
 moonbitlang

MoonBit 更新

// Before
fn init {
  let array : @vec.Vec[Int] = [1, 2, 3]
}
// After
fn main {
  let array : Array[Int] = [1, 2, 3]
}
fn main {
  let map = @map.Map::[ ("a", 1) ]
  match map {
    // 当 `map` 包含 "b" 时匹配,
    // 并把 "b" 在 `map` 中的值绑定到 `y`
    { "b": Some(y) } => println(y)
    // 当 `map` 不包含 "b" 而包含 "a" 时匹配,
    // 并把 "a" 的值绑定到 `k`
    { "b": None, "a": Some(k) } => println(k)
    // 编译器提示 { "b": None, "a": None } 的情况未被匹配到
  }
  // 输出:1
}
type A Int

pub fn op_add(self : A, other : A) -> A {
  self.0 + other.0 // 省略构造器
}

fn main {
  A::A(0) + 1 |> ignore // 省略 1 的构造器
  let _c : A = 0 + 1 + 2
}

构建系统更新

{
  "is-main": true,
  "test-import": []
}
{ 
 "link": {
  "wasm": {
  "export-memory-name": "custom_memory_name",
  "flags": ["-no-block-params"]
 },
}

标准库更新

fn Bytes::op_get(self : Bytes, index : Int) -> Byte
fn Bytes::op_set(self : Bytes, index : Int, value : Byte) -> Unit
fn Bytes::length(self : Bytes) -> Int
fn Bytes::make(len : Int, ~init : Byte = b'\x00') -> Bytes
527 次点击
所在节点    编程
0 条回复

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

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

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

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

© 2021 V2EX