Есть ли способ для baz.jso nnet получить доступ к местным жителям foo.libso nnet?
Нет. Местные жители, ну, в общем, местные. Это просто имена значений, доступных в некоторой лексической области. В частности, локальные объекты могут быть доступны только непосредственно в определении объекта.
Если вы хотите получить доступ к значению извне объекта, оно не должно быть локальным - вместо этого используйте поле. Если вы не хотите, чтобы он отображался при манифестации объекта, вы можете использовать скрытое поле, например:
$ 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
]
}