Julia类型系统

类型(Types)是语言中最为基本的要素,用于描述数据的表达结构。但Julia的类型系统是非常独特的,有着更为抽象、更为高层的语义。在该类型系统中,不仅仅数值有类型,函数、表达式,甚至是类型本身与代码符号都有特定的类型。可以说,一切语言要素在Julia中都对应着某个类型,都是类型系统的一部分。在这种广泛、统一、完备、动态的类型系统下,Julia的各种语言要素都是程序中可操纵的对象。
Julia类型系统

正是基于强大的类型系统,Julia提供了对面向对象、函数式及泛型编程等多种范式的支持,不但能够操作函数对象,对类型进行参数化,也能够进行多态分发(Multiple Dispatch),使得开发更为灵活、适应性更强。开发者可以宽松地使用类型,快速地实现逻辑;也可以在必要的时候严格地使用明确的类型,获得更好的性能。

类型简介

众所周知,整数与小数是基本的数集,有理数集是整数衍生出来的,而无理数集是小数的子集,它们都是实数集的一部分。与实数相对的是虚数,也即复数集合。不过通常而言,实数只是复数的一种特殊情况,也可视为复数的子集。但不论是实数还是复数,都是一种数字(Number)。

不同的数集之间可以通过一些计算进行转换。例如两个整数的比值可获得有理数,也可能获得无理数;整数相除会获得小数,而小数之间的加减乘除可得到整数;或对负实数开方可获得复数,等等。数集存在层层包含关系,一层层地抽象为范围更大的集合,基本依据便是子集之间在数学计算方面存在着相容性与一致性。

显而易见,集合的抽象层次越高,内部元素就越具多样性。说到整数,很明确是-1、1、3等这种与数量有关的数值;但说到实数,因为其包含整数、小数、有理数、无理数等各种情况,只有再具体些,我们才能更准确地给出实例。

可以说,在数学理论中,实数是一种抽象概念,是抽象的数字类型;而整数是一种具体概念,是具体的数字类型。不过到了计算机领域,情况会变得更复杂。就目前的架构原理,计算机内部表达数字总会受到字节数的限制,所以其能够表达的数字形式是有限的。

一般而言,计算机中基本的数字同样是整数与小数,但为了与数学概念区分,分别称为整型与浮点型,都是数值(Value)的一种。遵照约定的编码规则表达某一数值时,可采用的字节或位(Bit)会有若干选择,也就有了多种存储结构(StorageLayout),例如前面介绍的单字节(8比特位)整型Int8、64位整型Int64、32位浮点型Float32等。

在Julia中,这种与明确二进制存储结构相关联的数值类型被称为元类型,是可以在内存中分配空间并进行各种操作的具体类型;而内存分配产生的每一份值空间占用称为对应类型的实例(Instance)或对象(Object),这种通过空间分配创建对象的过程称为该类型的实例化(Instantiation)。

教程目录

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!