颤动中的协变函数
functioning of covariant in flutter
我在浏览 dart 文档时遇到了这段代码和这个术语
covariant
。我浏览了一些文档,但没有得到它的 function
是什么。总是感谢详细解释的答案。
class Animal {
void chase(Animal x) { ... }
}
class Mouse extends Animal { ... }
class Cat extends Animal {
@override
void chase(covariant Mouse x) { ... }
}
通过使用 covariant 关键字,您禁用 type-check 并负责确保您在实践中不违反合同。
正如你在例子中看到的,如果你重写了一个方法,它的参数也应该是相同的。但是如果你使用协变,它将允许你使用 Mouse 而不是 Animal。
只需尝试删除关键字协变,它就会变得不言自明。
您将收到一个编译器错误,提示您正在重写参数类型不匹配的方法 Expected: Animal, Actual: Mouse
但是,Mouse 是 Animal 的子类型,所以如果你想允许这种情况没有错误,请添加 covariant 关键字
之前
之后
在这里你可以看到老鼠是动物的亚种
我在浏览 dart 文档时遇到了这段代码和这个术语
covariant
。我浏览了一些文档,但没有得到它的 function
是什么。总是感谢详细解释的答案。
class Animal {
void chase(Animal x) { ... }
}
class Mouse extends Animal { ... }
class Cat extends Animal {
@override
void chase(covariant Mouse x) { ... }
}
通过使用 covariant 关键字,您禁用 type-check 并负责确保您在实践中不违反合同。
正如你在例子中看到的,如果你重写了一个方法,它的参数也应该是相同的。但是如果你使用协变,它将允许你使用 Mouse 而不是 Animal。
只需尝试删除关键字协变,它就会变得不言自明。
您将收到一个编译器错误,提示您正在重写参数类型不匹配的方法 Expected: Animal, Actual: Mouse
但是,Mouse 是 Animal 的子类型,所以如果你想允许这种情况没有错误,请添加 covariant 关键字
之前
之后
在这里你可以看到老鼠是动物的亚种