Open 981377660LMT opened 6 months ago
在类型系统中,"函数是逆变的"是指,如果有类型 A 和类型 B,且 A 是 B 的子类型,那么对于函数类型,函数的参数类型就是逆变的,也就是说,函数参数的类型 B 到 A 的变化方向与 A 到 B 的子类型关系是相反的。
举个例子,假设我们有两个类型 Animal 和 Dog,Dog 是 Animal 的子类型。那么对于函数类型 f: (Animal) -> void 和 g: (Dog) -> void,我们可以说 f 是 g 的子类型,因为 f 可以接受任何 g 可以接受的参数。
f: (Animal) -> void
g: (Dog) -> void
f
g
这就是所谓的逆变,函数参数的类型关系与原始类型的关系是相反的。这是因为如果一个函数可以接受更广泛的参数类型,那么它就可以被认为是更 "通用" 的,因此应该被认为是其他函数的子类型。
在类型系统中,"函数是逆变的"是指,如果有类型 A 和类型 B,且 A 是 B 的子类型,那么对于函数类型,函数的参数类型就是逆变的,也就是说,函数参数的类型 B 到 A 的变化方向与 A 到 B 的子类型关系是相反的。
举个例子,假设我们有两个类型 Animal 和 Dog,Dog 是 Animal 的子类型。那么对于函数类型
f: (Animal) -> void
和g: (Dog) -> void
,我们可以说f
是g
的子类型,因为f
可以接受任何g
可以接受的参数。这就是所谓的逆变,函数参数的类型关系与原始类型的关系是相反的。这是因为如果一个函数可以接受更广泛的参数类型,那么它就可以被认为是更 "通用" 的,因此应该被认为是其他函数的子类型。