您的位置:首页 > 其它

Ice 读书笔记--Slice语言

2011-08-22 22:04 169 查看
Slice语言



1. Slice(Specification Language for Ice)是一种用于使对象接口与其实现相分离的基础性抽象机制。

因为Slice描述的是接口和类型,它是一种纯粹的描述性语言;因此无法用slice语言来编写可执行语句。

2. 编译

两种情况:客户和服务器使用相同、不同的开发环境

3. 源文件

3.1 文件命名

含有Slice定义的文件必须以.ice扩展名结尾。

3.2 预处理

使用#include指令时,只允许使用<>语法来指定文件名,不能使用””。

3.3 定义次序

4. 语法规则

4.1 注释

可以使用C或者C++的注释风格。

4.2 关键字

4.3 标识符

标识符以一个字母开头,后面可以跟任意数目的字母或数字。Slice标识符不能有下划线。

5. 基本的Slice类型

6. 用户定义的类型


对于像Slice这样的规范语言而言,嵌套的类型定义并无必要。

6.1 Slice没有null串的概念

7. 接口,操作以及异常

7.1 只有操作定义能出现在接口定义内部。

7.2 Slice不支持任何形式的操作重载。

7.3 nonmutating 关键字说明,getTime操作不会改变它的对象的状态

idempotent 关键字表明某个操作可以安全的多次执行。

7.4 如果数据库查找返回空结果集就抛出异常,这是一种错误的做法。

7.5 大多数情况下,定义空接口说明在设计上存在一定的不合理性。

8. 类

8.1 简单类

Slice的类定义与结构体相似,所用关键字是class。Struct不能定义为空。

8.2 类继承

与结构不同,类支持继承。类支持单继承。

8.3 类的继承语义

类继承可以传递多态的值。

8.4 类用作联合

8.5 自引用的类

类具有值语义,而代理具有引用语义。自引用的类不仅能用于非循环图,也能用于循环图。

8.6 类 vs 结构

类提供了一些特性,是结构没有的:

a. 类支持继续 b. 类可以自引用 c. 类可以有操作 d. 类可以实现接口

8.7 有操作的类

类上的操作总是在调用者的地址空间执行,即类的操作是本地操作。

8.8 类在架构上的影响

8.9 实现接口的类

Slice类也可以用作服务器中的servant,也就是说,类的实例可以用来提供接口的行为。

一个类可以实现若干接口。除了实现一个接口,一个类还可以拓展另一个类。

8.10 提前声明

接口和类都可以进行提前声明。提前声明可以创建互相依赖的类对象。提前声明的接口和类可以用作结构,异常,或类成员的类型,用作词典的值类型,用作操作的参数或者返回类型。

8.11 模块

Module语言成分可以减轻全局名字空间带来的名字冲突问题。Module分别映射到C++的Namespace和java的package。

在语法上,在另一个模块中提前声明接口是非法的。(资料P109)

8.12 本地类型

任何Slice定义都可以用关键字local进行修饰。由于本地类型不能在服务器端和客户端之间传送,本地类型永远不能从外地调用。

8.13 Ice模块

整个Ice API的大部分内容都是作为Slice定义表示的。

8.14 元数据

元数据出现在一对方括号中,含有一个或者多个有逗号分隔的串直接量。元数据意在用于特定的后端,比如特定语言映射的代码生成器。

8.15 使用Slice编译器

Ice为每种语言映射提供了单独的Slice编译器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: