$ cat foo.libsonnet
{
local foo = 99,
bar: [ foo, 101 ]
}
$ cat baz.jsonnet
{
local foo = import 'foo.libsonnet',
baz: [foo.foo, foo.bar]
}
$ jsonnet baz.jsonnet
RUNTIME ERROR: field does not exist: foo
baz.jsonnet:3:11-18 thunk <array_element>
baz.jsonnet:3:10-28 object <anonymous>
During manifestation
Run Code Online (Sandbox Code Playgroud)
在这个例子中,很容易访问bar的字段foo。有什么办法可以baz.jsonnet访问当地人吗foo.libsonnet?
如果答案是否定的,我应该如何实现foo,baz以便我可以访问in Both和 also in 的foo字段?foo.libsonnetfoo.libsonnetbaz.jsonnet
baz.jsonnet 有什么方法可以访问 foo.libsonnet 的本地文件吗?
不,当地人就是当地人。它们只是某些词法范围内可用的值的名称。特别是对象局部变量只能在对象定义中直接访问。
如果您想从对象外部访问值,则它不应该是本地值 - 请改用字段。如果您不希望在显示对象时显示它,可以使用隐藏字段,如下所示:
$ cat foo.libsonnet
{
foo:: 99, // double colon indicates that the field is hidden
bar: [ self.foo, 101 ]
}
$ cat baz.jsonnet
{
local foo = import 'foo.libsonnet',
baz: [foo.foo, foo.bar]
}
$ jsonnet baz.jsonnet
{
"baz": [
99,
[
99,
101
]
]
}
$ jsonnet foo.libsonnet
{
"bar": [
99,
101
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1072 次 |
| 最近记录: |