我的目標是使嵌套字典中的外部欄位可以訪問內部欄位的值。
假設我有以下代碼
diction: {
"outer": "part1",
{
"inner": "part2"
}
"outer and inner": outer inner
}
上面的代碼不起作用,因為內部由于作用域而無法訪問。我想做一些類似全球的事情
diction: {
"outer": "part1",
{
global "inner": "part2"
}
"outer and inner": outer inner
}
或者找到一種方法使 jsonnet 變數可變,這樣我仍然可以修改變數以提取內部的值。
diction: {
"outer": "part1",
"outer and inner": "",
{
"inner": "part2",
"outer and inner": outer inner
}
}
有沒有辦法做這樣的事情?
uj5u.com熱心網友回復:
請注意,您的jsonnet腳本在語法上不正確:您不應將其jsonnet視為具有“內部”作用域的“標準”命令式語言,而應將其視為“可編程 JSON”,以過度簡化它。
因此,程式的結構(/schema)與JSON 語法jsonnet非常接近(r),但請務必閱讀https://jsonnet.org/learning/tutorial.html和相關語言材料。
將您的原始問題重新設計為語法正確,您可以使用 參考當前物件的范圍self,然后使用點表示法來參考包含物件的欄位:
代碼
{
diction: {
outer: 'part1',
// NB: `in1` is an object (in jsonnet terms), with key:value entries such as `inner`
in1: {
inner: 'part2',
},
'outer and inner': self.outer self.in1.inner,
},
}
輸出
{
"diction": {
"in1": {
"inner": "part2"
},
"outer": "part1",
"outer and inner": "part1part2"
}
}
請注意,如果您想在 JSON 輸出中取消outer和in1欄位,您可以使用雙冒號表示法outer::和in1::。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/484430.html
上一篇:使用變數呼叫字典中的鍵?
