20210702基于研究dart的泛型 - ziyouzy/2021blog GitHub Wiki

泛型在dart语法上讲可以用“一种标记”来形容
他可以去“标记”某一个方法,某一个函数,某一个类,甚至某一个接口,从而让被标记的主体拥有“泛型特性”
因此自然而然的dart会存在(支持)泛型方法,泛型类,泛型接口
好文:

http://www.ptbird.cn/dart-generic.html

发现了新的知识点:泛型在语法上,是需要将变量名作为参数传递进去的:

class Array<T> {
    List _list = new List<T>();
    Array();
    void add<T>(T value) {
    this._list.add(value);
}

get value{
    return this._list;
}

如上例子中“T”其实是充当了参数表的作用,实际使用时是可以向其传入“int”、“String”、“Widget”这些“数据类型”的
泛型的本质在于“约束”这种约束在我看来其实是弱类型语言才必须的特性,而像golang那样的强类型则并不需要
因为强类型本身就是一种约束,在次设计泛型,那在逻辑和理念上就会形成“强类型”与“泛型”之间的冲突
反过来说,如果一个强类型语言在使用过程中存在一些“蹩脚”的时候,存在一些“需要靠泛型才能解决的问题”
那么其实是这个语言“对强类型的特性”的设计还有待完善,而不是说这个强类型语言需要泛型

换句话说,最完美的设计形态应该是:

有朝一日世界上不该再继续存在“强类型语言”和“弱类型语言”这两个称呼
而只存在“无泛型语言"与“泛型语言”这两个称呼