Gleam 是一种类型安全且可扩展的编程语言,可用于 Erlang 虚拟机和 JavaScript 运行时。
最新发布的 0.27 包含以下变化:
- 支持在
use
表达式 (use
expressions)中使用模式
Gleam v0.25 引入了use
表达式,该功能有助于避免 Gleam 程序中的“回调地狱 (callback hell)”。它非常强大,可用于模拟其他语言中的许多功能,例如提前返回、列表推导 (list comprehensions)、async/await、monadic do 语法等等!
pub fn handle(req: Request) -> Response {
// Return an error for non-post requests
use <- when(req.method != Post, return: method_not_allowed)
// Parse the request body or return an error
use json <- require_json_body(req)
// Open a database connection, closing it when we're done
use conn <- database.with_connection
case database.insert(conn, json) {
Ok(record) -> created_response(record)
Error(err) -> bad_request_response(err)
}
}
表达式的一个限制use
是模式不能用于它们的赋值,只能用于裸变量。这意味着您不能用它们解构元组或其他数据结构。从这个版本开始,表达式中现在支持模式use
,以满足所有解构需求。
use #(first, second) <- some_tuple_function()
- 引入
panic
关键字
case this_should_never_fail() {
Ok(value) -> continue(value)
// Oh no! Something went horribly wrong!
Error(_) -> panic
}
- 优化断言
Gleam 的assert
关键字用于确保数据匹配给定的模式,如果不匹配则程序崩溃。这很有用,但是用于assert
此功能意味无法拥有assert
与布尔表达式一起使用的功能,而这在其他语言中很常见。
为了解决这个问题,模式匹配功能已移至let assert
语法。现有assert
关键字已被弃用,稍后将用于更传统的断言功能,成为基于改进测试 Gleam 代码的人体工程学的更大 Gleam 里程碑的一部分。
let assert Ok(value) = this_should_never_fail()
详情查看发布公告。