2016-10-22 142 views

回答

3

是的,你大部分是正确的。

子类型是两个类型的关系。它本身并没有说明这种关系如何实际应用于表达式的输入。

包含通常意味着存在表达式的键入规则,允许隐式应用子类型到它们的类型。有些子类型的语言没有包含规则,必须使用特殊的类型注释(例如OCaml)显式调用。

子类型是否是“强制性”也有些独立的方面。强制分类改变其应用的价值。例如,在浮点语言中,子类型可能是强制性的,因为整数和浮点数是不同的域。对象的典型OO风格分类通常不具有强制性。然而,这是一个有些模糊的概念,因为它通常取决于语义模型的选择,并且可能不一定会产生可观察到的差异(除非语言允许使用向下转换来反转subtying)。实际上,它指的是实现技术而不是语义。

相关问题