Programming

类型与多态(polymorphism)

所谓类型,其实就是对表示信息的值进行的细粒度的区分。
比如整数、小数、文本等,粒度再细一点,就是布尔值、符号整型值、无符号整型值、单精度浮点数、双精度浮点数、字符和字符串。
其他还有各种自定义的类型。
不同的类型占用的内存不同。与直接操作比特位相比,直接操作类型可以更安全、更有效地利用内存。
在类型系统中,一切皆类型。基于类型定义的一系列组合、运算和转换等方法,可以看作类型的行为。类型的行为决定了类型该如何计算,同时也是一种约束,有了这种约束才可以保证信息被正确处理。
值 被赋予类型,也就被赋予了行为特征。形成约束,约束值被正确处理的方式。

多态是基于某个类型等,多态的表现形式:
参数化多态和 Ad-hoc 多态一般是静多态,子类型多态一般是动多态。静多态牺牲灵活性获取性能,动多态牺牲性能获取灵活性。
参数化多态(Parametric polymorphism):泛型(不同类型被当作一个集合处理, 不同的类型表现出相同行为)
Ad-hoc多态(Ad-hoc polymorphism):Trait,函数重载(根据上下文变化(参数,调用者等),不同的类型表现出不同的行为)
子类型多态(Subtypepolymorphism):继承(一定是具有某种包含)

Ad-hoc多态也叫特定多态。Ad-hoc多态是指同一种行为定义,在不同的上下文中会响应不同的行为实现。

函数、方法、关联函数

方法和关联函数的概念都是在结构体的实现中才会出现:
image.png
方法:在结构体的实现中,使用实例作参数的函数;
关联函数(associated functions):在结构体的实现中,但未使用实例参数的函数

关联类型与泛型

image.png
关联类型适用于类型有限集(类型数目不多)
泛型则适合众多(可所有)类型的集合,整体处理