我正在学习杨的事。我想要由一个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
复制相似问题