zoukankan      html  css  js  c++  java
  • ICE系列之3对象接口定义语言——slice

         Slice 定义由编译器编译到特定的实现语言 。编译器把与语言无关的定
    义翻译成针对特定语言的类型定义和 API。开发者使用这些类型和 API 来
    提供应用功能,并与 Ice 交互。用于各种实现语言的翻译算法称为语言映射(language mappings)    
        SLice作用:
            编写接口定义,并由ice提供的对应工具,生成对应的接口声明文件。然后由服务端实现,客户端调用。
            详细可以参见:http://www.cnblogs.com/zhangronghua/tag/ice/       
        注意:
                slice文件的后缀名必须小写,且为ice
        slice的预处理命令:
            #ifndef、#define、#endif
        文件包含命令:
            #include<文件.ice> 。
        注意
            1 slice中不存在#include" "写法
            2 文件包含命令只能位于文件开头
     
        注释:
             // 你好
            /*你好*/
        自定义标识符:可以包含 字母、数字
            注意:
                1     不能包含下划线
                2    大小写不敏感,但是大小写要保持一致。也就是申明了一个标识符为A时,在其他地方也得用A,而不能用a,否则编译报错
                3    和特定语言有关键字冲突时,会被自动重命名
                4    在标识符前面加“”,可以去掉关键字含义。例如struct dictionary {/* OK*/};
        被保留的标识符:
                1 Slice 为 Ice 实现保留了标识符 Ice 及以 Ice (任何大小写方式)起头的所有标识符
                2 以下面任何一种后缀结尾的 Slice 标识符也是保留的:Helper、Holder、Prx,以及 Ptr。Java 和 C++ 语言映射使用了这些后缀,保留它们是为了防止在生成的代码中发生冲突。
        数据类型:
            bool,byte,short,int,long,float,double,string
        枚举定义:
            enum enumName{n1,n2}
            注意: slice不支持指定各个枚举项的具体值,也就是enum enumName{n1=1,n2=2} 是不合法的
        结构体定义:持含有一个或多个有名称的成员的结构,这些成员可以具有任意类型,包括用户定义的复杂类型.如下:
            struct structName{short s1,string s2,enumName e1}
        序列:变长的元素向量。序列可以是空的——也就是说,它可以不包含元素;它也可以持有任意数量的元素,直到达到你的平台的内存限制。
            sequence<Fruit> FruitPlatter;
        词典:是从键类型到值类型的映射
    struct Employee {
    long
    number;
    string firstName;
    string lastName;
    };
    dictionary<long, Employee> EmployeeMap;

        常量定义:常量定义的类型必须是以下类型中的一种:

    • 整型 (bool、byte、 short、int、long,或枚举类型)
    • float 或 double
    • string
    如:const bool AppendByDefault = true;

        接口定义:

    struct TimeOfDay {
    short hour;
    // 0 - 23
    short minute;
    // 0 - 59
    short second;
    // 0 - 59
    };
    interface Clock {
    TimeOfDay getTime();
    void setTime(TimeOfDay time);
    };

        参数与返回值:必须指定返回值

            在缺省情况下,参数会从客户发往服务器,也就是说,它们是输入参数。要把值从服务器传到客户,你可以使用输出参数,这种参数用 out 关
    键字指示。例如,你可以用另外一种方式定义第 70 页上的 getTime 操作:void getTime(out TimeOfDay time);
            注意:所有输入参数均在输出参数前面
            Slice 不支持任何形式的操作重载
        函数操作符:        
            nonmutating操作符:对应c++的const的函数操作
            idempotent:idempotent 关键字表明某个操作可以安全地多次执行。(Ice run time 利用这一知识来更积极地进行错误恢复)
  • 相关阅读:
    PHP开发者必须养成的十大优良习惯
    Centos7下编译安装PHP
    linux 强制删除yum安装的php7.2
    php和go的web性通对比
    最好的编程语言及其它
    管理哲学新解
    继甲骨文裁员、Java服软Python后,国产原创IT技术已经成熟,让中国科技不再受制于人!
    雷军:我是个失败的创业者,因为我是劳模
    当95后进入大厂
    如何避免自high式分享
  • 原文地址:https://www.cnblogs.com/foreverme/p/3385035.html
Copyright © 2011-2022 走看看