Google 發明新語言:Jsonnet
Google開源了一門配置語言Jsonnet來取代JSON,它完全向後相容並加入了一些新特性:註釋、引用、算術運算、條件運算子,陣列和物件內含,引入,函式,區域性變數,繼承等。Jsonnet程式被翻譯為相容JSON的資料格式。
註釋:Jsonnet接受兩種風格的註釋——C風格(/* …. */)和C++風格(//… )。
引用:關鍵字self引用當前物件,運算子$引用根物件。
算術運算和條件運算子:運算子+可以計算數字和,拼接字串、陣列和物件;運算子==和!=用來判別true或false。運算子if與C語言中的三元表示式 ? : 類似。下面是一些Jsonnet運算子和轉譯後的JSON程式碼示例(借鑑了官方語言示例):
// bar_menu.3.jsonnet
{
foo: 3,
bar: 2 * self.foo, // Multiplication.
baz: "The value " + self.bar + " is "
+ (if self.bar > 5 then "large" else "small") + ".",
array: [1, 2, 3] + [4],
obj: {a: 1, b: 2} + {b: 3, c: 4},
equality: 1 == "1",
}
{
"foo": 3,
"bar": 6,
"baz": "The value 6 is large.",
"array": [1, 2, 3, 4],
"obj": {a: 1, b: 3, c: 4},
"equality": false
}
構建陣列和物件:構造器for可以用來構建陣列和物件,下面是示例:
{
foo: [1, 2, 3],
bar: [x * x for x in self.foo if x >= 2],
baz: { ["field" + x]: x for x in self.foo },
obj: { ["foo" + "bar"]: 3 },
}
{
"foo": [ 1, 2, 3 ],
"bar": [ 4, 9 ],
"baz": {
"field1": 1,
"field2": 2,
"field3": 3
},
"obj": { "foobar": 3 }
}
模組化:Jsonnet編寫的程式碼可以分割為多個檔案,使用import進行訪問,引入的物件可以使用運算子+進行拼接。
函式:Jsonnet的值可以包含函式,這部分會被標記為隱藏欄位並且不被翻譯到JSON中。函式被用於多項評估,點選這裡檢視示例。
Jsonnet同樣支援區域性變數、引入式物件繼承、運算子+拼接、可計算和可選欄位等特性。
Jsonnet語言引擎使用C++11進行實現,為了便於移植到其它語言中使用C語言API進行了封裝,目前提供C和Python的庫。C++實現的引擎可以透過Emscripten編譯為JavaScript程式碼,你也可以在Node.js中使用非官方的npm包。
想了解更多,我們推薦閱讀語言規範以及與其它配置語言的對比這篇文章。
相關文章
- Google的Go語言速度提升Go
- Google釋出go程式語言Go
- Go是Google的語言,而不是我們的語言Go
- Google 大佬們為什麼要開發 Go 這門新語言?Go
- Google的Dart語言能成功取代JavaScript嗎?GoDartJavaScript
- 眾家評說Google新程式語言DartGoDart
- 國人開發的程式語言-“明”語言
- GO語言併發Go
- App 開發語言APP
- 使用google翻譯 api 翻譯中文成其他語言GoAPI
- 要搞事?Google 宣佈重啟 Dart 程式語言GoDart
- 在 Google Cloud 上輕鬆部署開放大語言模型GoCloud模型
- C語言:發工資C語言
- Swift 新語言開發Swift
- C語言開發工具C語言
- go語言安卓開發Go安卓
- 程式語言那麼多,為什麼Google獨愛JS?GoJS
- 新型蛋白質大語言模型即將登陸Google Cloud模型GoCloud
- plsql開發語言基礎SQL
- Rust語言開發資源Rust
- 鴻蒙開發TypeScript語言:【Number】鴻蒙TypeScript
- Go語言是徹底的面向組合的併發語言Go
- 【Go 語言入門專欄】Go 語言的起源與發展Go
- 探索自然語言處理:語言模型的發展與應用自然語言處理模型
- 更小、更快、更簡單Google ProtoBuf 跨語言通訊協議Go協議
- 未來的雲端計算語言?Go在Google內部崛起Go
- FAIR & NYU開發XNLI語料庫:15種語言(含低資源語言)AI
- 【開發語言】PHP、Java、C語言的編譯執行過程PHPJavaC語言編譯
- java開發C語言編譯器:為C語言提供API呼叫JavaC語言編譯API
- Java 語言是強型別語言語言(轉)Java型別
- Google開源Carbon語言,旨在成為C++的繼任者GoC++
- GO 語言快速開發入門Go
- go語言開發有哪些工具Go
- Go語言開發環境搭建Go開發環境
- Go語言併發程式設計Go程式設計
- Java開發之路—java語言概述Java
- Elm 語言開發微信小程式微信小程式
- Rust語言神奇的併發模型Rust模型