出品 | OSC開源社區(ID:oschina2013)
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
示例代碼
- 使用函數 / 表達式進行回調,從外部源獲取它們的值
fnf( cb fnstring ) string { returncb }
dump( f(fnstring { returnos.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