VBScript
VBScript只有一种数据类型 —— Variant,它是根据上下文来判断是数字还是字符串。因为Variant是VBScript中唯一的数据类型,所以它也是VBScript中所有函数的返回值的数据类型。为了进一步区分数据类型,它包含如下数据子类型:1
|| ||
VBScript在定义时只有一种变量类型,在实际使用中需要使用类型转换函数来将变量转换成相应的变量类型。
|| ||
ORACLE subtype 子类型定义子类型我们可以在任何PL/SQL块、子程序或包中定义自己的子类型,语法如下:2
|| ||
subtype_name就是声明的子类型的名称,base_type可以是任何标量类型或用户定义类型,约束只是用于限定基类型的精度和数值范围,或是最大长度。下面举几个例子:
|| ||
我们可以使用%TYPE或%ROWTYPE来指定基类型。当%TYPE提供数据库字段中的数据类型时,子类型继承字段的大小约束(如果有的话)。但是,子类型并不能继承其他约束,如NOT NULL。
使用子类型一旦我们定义了子类型,我们就可以声明该类型的变量、常量等。下例中,我们声明了Counter类型变量,子类型的名称代表了变量的使用目的:
|| ||
下面的例子演示了如何约束用户自定义子类型:
|| ||
子类型还可以检查数值是否越界来提高可靠性。下例中我们把子类型Numeral的范围限制在-9到9之间。如果程序把这个范围之外的数值赋给Numeral类型变量,那么PL/SQL就会抛出一个异常。
|| ||
Ada子类型创建数据类型和子类型(Creating Types and Subtypes)3
使用变量时,除了以某标识符作为变量的名称外,还要指定该变量的数据类型。一个数据类型定义了变量可接受的值以及所能执行的操作。比如说,一个数据类型为 Age 的变量 Bill,Age 的取值范围为 1..100,并只有 + – 这两种操作,在这里,对象(object)为名为 Bill 的变量,它的取值在 1..100 之间(包括 1,100),值的变化只能通过+ -这些基本运算符(primitive operation)来实现,而无法通过* /等其它运算符。Ada 中的数据类型,包括预定义类型,都是按照一定的格式在程序包中创建的。下面就介绍创建数据类型的一些基本内容,更多相关内容会在以后见到。
创建新的数据类型创建一个新类型,需要使用保留字type,is,range。格式如下:
|| ||
type_name 为新类型的名称,是一个合法标识符;range_specifcation 表示该类型的取值范围,表示方式为 First .. Last,如 1..100 , -9 ..10 。
例如创建上面提及的一个新类型 Age :
|| ||
这样就有了一个数据类型 Age, 取值范围 1 .. 100。
有一点要注意:range_specfication 中 First 要大于 Last。 如 type months is range12 .. 0, 实际上 months 是一个空集(null),而不是所期望的 0..12。
不同数据类型之间是不能进行混合运算的,即使取值范围和运算符一样。
派生类型大家可能会发现,如果像上面一样创建一个截然不同的新类型,还需要定义它的运算符,使用很不方便。因此,往往是派生现有的类型,其格式为:
|| ||
type_name 为新类型的名称,是一个合法标识符;range range_specification 表示该类型的取值范围,是可选的,没有的话表示新类型 type_name 的取值范围和 old_type 一样。
创建子类型创建新类型和派生类型的麻烦从上文就可以感受的到,特别是在科学计算这些有很多种小类型的软件当中,上述两种方法实在过于繁杂。这时子类型(subtype)就相当有用,子类型的定义格式为:
|| ||
type_name 为新类型的名称,是一个合法标识符;rangerange_specification 表示该类型的取值范围,是可选的,没有的话表示新类型 type_name 的取值范围和 old_type 一样。
子类型不仅继承母类型的属性,而且和母类型、其它同母类型的子类型可混合使用。
在前面的例子中的,我们都提到了取值范围,这也是Ada 的一项―特色‖:Ada 不同于 C 和 Pascal— 赋给一个变量超过其取值范围的值或进行不合法运算,会输出错误的值而不报错,与此相反,Ada 程序在编译时会提示错误,或在运行 Ada 程序时产生Constraint_Error异常,异常和 C 中的信号Signal差不多。