5.5. 嵌套Typedef和分组

类型定义和分组可能会出现在许多YANG语句之下,允许它们在它们出现的语句层次结构的词汇范围内。这使得类型和分组可以在使用位置附近进行定义,而不是将它们放在层次结构的顶层。靠近增加了可读性。

范围界定还允许定义类型而不用担心不同子模块中的类型之间的命名冲突。可以指定类型名称,而无需添加旨在防止大型模块中的名称冲突的前导字符串。

最后,范围设定允许模块作者将模块或子模块的类型和分组保留为私有模式,以防止其重用。由于只有顶级类型和分组(即,作为“模块”或“子模块”语句的子分支出现的那些)才能在模块或子模块之外使用,开发人员可以更好地控制其模块呈现给外部世界,支持隐藏内部信息的必要性,并保持与外部世界共享的内容与私有内容之间的界限。

作用域定义不能在更高的范围内影射定义。如果语句层次结构中的更高级别具有匹配标识符的定义,则无法定义类型或分组。

对前缀类型或分组的引用,或者使用当前模块的前缀的引用,通过在每个祖先语句的直接子语之间查找匹配的“typedef”或“grouping”语句来解决。