首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >杨:如何指定复杂类型

杨:如何指定复杂类型
EN

Stack Overflow用户
提问于 2017-10-16 16:53:57
回答 1查看 1.4K关注 0票数 1

我正在学习杨的事。我想要由一个Uri和一个IpAddress列表组成的typedef。所以我尝试了以下几种方法:

代码语言:javascript
运行
复制
  typedef mapping {
      type union {

                type inet:uri;

                 list addresses {
                     type inet:IpAddress;
                 }
         }
    }

稍后,我希望在容器中使用此定义的类型。但是上面的定义给了我一个编译错误。杨类型与c++类型相似吗?我怎样才能定义这样的结构呢?

EN

回答 1

Stack Overflow用户

发布于 2017-10-17 07:06:46

根据您的描述,在我看来,您似乎想要创建一个结构的可重用定义,该定义有两个字段:一个uri和一个addresses列表。这个工作最好的工具是杨氏分组。RFC说,“分组就像常规编程语言中的”结构“或”记录“。下面的分组应该是您要寻找的内容:

代码语言:javascript
运行
复制
grouping mapping {
   leaf uri {
     type inet:uri;
   }
   list address {
     type inet:IpAddress;
   }
 }

然后,您可以在下面的示例中通过grouping引用这样的语句

代码语言:javascript
运行
复制
container specific_mapping {
    uses mapping;
}

代码语言:javascript
运行
复制
list my_mapping {
    key "uri";
    uses mapping;
}

以下实例文档与上述内容兼容:

代码语言:javascript
运行
复制
<specific_mapping>
    <uri>some uri</uri>
    <address>address 1</address>
    <address>address 2</address>
</specific_mapping>

代码语言:javascript
运行
复制
<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不是一种类型,因此不能在那里使用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46775326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档