我正在学习杨的事。我想要由一个Uri和一个IpAddress列表组成的typedef。所以我尝试了以下几种方法:
typedef mapping {
type union {
type inet:uri;
list addresses {
type inet:IpAddress;
}
}
}稍后,我希望在容器中使用此定义的类型。但是上面的定义给了我一个编译错误。杨类型与c++类型相似吗?我怎样才能定义这样的结构呢?
发布于 2017-10-17 07:06:46
根据您的描述,在我看来,您似乎想要创建一个结构的可重用定义,该定义有两个字段:一个uri和一个addresses列表。这个工作最好的工具是杨氏分组。RFC说,“分组就像常规编程语言中的”结构“或”记录“。下面的分组应该是您要寻找的内容:
grouping mapping {
leaf uri {
type inet:uri;
}
list address {
type inet:IpAddress;
}
}然后,您可以在下面的示例中通过grouping引用这样的语句:
container specific_mapping {
uses mapping;
}和
list my_mapping {
key "uri";
uses mapping;
}以下实例文档与上述内容兼容:
<specific_mapping>
<uri>some uri</uri>
<address>address 1</address>
<address>address 2</address>
</specific_mapping>和
<my_mapping>
<uri>some uri</uri>
<address>address 1</address>
<address>address 2</address>
</my_mapping>
<my_mapping>
<uri>other uri</uri>
<address>address 3</address>
<address>address 4</address>
</my_mapping>typedef语句在杨1.1的本节中作了解释。RFC 7950它的目的是指定一种类型的单叶,因此它不能用于创建您想要的结构。使用typedef时,可以为该类型定义所有可能的值集。这就是所谓的值空间。您尝试使用的内建式用于组合其中列出的类型的值空间。list不是一种类型,因此不能在那里使用。
https://stackoverflow.com/questions/46775326
复制相似问题