出品 | OSC開源社區(qū)(ID:oschina2013)
V 語言終于有 lambdas 了。
V 是一個(gè)集合了 Go 的簡(jiǎn)單和 Rust 的安全特性的靜態(tài)語言,作者表示 V 與 Go 非常相似,如果你了解 Go,那么就已經(jīng)了解 80% 的 V。V 在 Go 的基礎(chǔ)上進(jìn)行改進(jìn)之處:https://vlang.io/compare#go。
V 主要特性
- 簡(jiǎn)單(作者聲稱可以在不到一小時(shí)內(nèi)學(xué)習(xí) V)
- 快速編譯(編譯器只有 400kb,而且無第三方依賴)
- 易于開發(fā):V 在不到一秒鐘的時(shí)間內(nèi)完成編譯
- 安全:沒有 null、沒有全局變量、沒有未定義的值、邊界檢測(cè)、默認(rèn)使用 Immutable 結(jié)構(gòu)體
- 支持 C/C++ 轉(zhuǎn)換
- 方便使用的交叉編譯
- 提供跨平臺(tái) UI 庫
- 內(nèi)置圖形庫
- 內(nèi)置 ORM
- 內(nèi)置 Web 框架
- ……
根據(jù) V 語言倉庫的 PR 合并信息,目前已添加對(duì)短 lambda 表達(dá)式的支持,例如:
a.sorted(|x,y| x > y)
▲ https://Github.com/vlang/v/pull/19390
示例代碼
- 使用函數(shù) / 表達(dá)式進(jìn)行回調(diào),從外部源獲取它們的值
fnf( cb fnstring ) string { returncb }
dump( f(fnstring { returnos.args[0] }) )
// the same, just shorter:
dump( f(||os.args[0]) )
打印結(jié)果如下:
[a.v:5]f(anon_fn): /v/vnew/a
[a.v:6]f(|| os.args[0]): /v/vnew/a