V 语言终于有 lambdas 了。
V 是一个集合了 Go 的简单和 Rust 的安全特性的静态语言,作者表示 V 与 Go 非常相似,如果你了解 Go,那么就已经了解 80% 的 V。V 在 Go 的基础上进行改进之处:https://vlang.io/compare#go。
V 主要特性
- 简单(作者声称可以在不到一小时内学习 V)
- 快速编译(编译器只有 400kb,而且无第三方依赖)
- 易于开发:V 在不到一秒钟的时间内完成编译
- 安全:没有 null、没有全局变量、没有未定义的值、边界检测、默认使用 Immutable 结构体
- 支持 C/C++ 转换
- 方便使用的交叉编译
- 提供跨平台 UI 库
- 内置图形库
- 内置 ORM
- 内置 Web 框架
- ……
根据V语言仓库的 PR 合并信息,目前已添加对短 lambda 表达式的支持,例如:
a.sorted(|x,y| x > y)
▲ https://github.com/vlang/v/pull/19390
示例代码
- 使用函数/表达式进行回调,从外部源获取它们的值
import os
fn f( cb fn() string ) string { return cb() }
dump( f(fn() string { return os.args[0] }) )
// the same, just shorter:
dump( f(||os.args[0]) )
打印结果如下:
[a.v:5] f(anon_fn): /v/vnew/a
[a.v:6] f(|| os.args[0]): /v/vnew/a