Generics Dart:需要实现运算符[]的通用约束
在Dart中,是否可能有一个泛型约束,它需要泛型类型来实现特定的运算符功能 我想要一个通用函数,它接受实现Generics Dart:需要实现运算符[]的通用约束,generics,dart,operator-overloading,Generics,Dart,Operator Overloading,在Dart中,是否可能有一个泛型约束,它需要泛型类型来实现特定的运算符功能 我想要一个通用函数,它接受实现运算符[]的任何类型 e、 g void foo(T参数){ 变量v=arg['abc'] } 否 []操作符只是一个与其他方法类似的方法,除了花哨的名称。 可以将类型参数约束为具有特定方法的唯一方法是要求它实现具有该方法的接口,然后只有当参数类型实际实现该接口时,它才起作用 您所要求的是对类型的结构要求,而Dart类型系统大多是名义上的(类型是由其名称定义的,而不是由其成员定义的,因此,如
运算符[]
的任何类型
e、 g
void foo(T参数){
变量v=arg['abc']
}
否
[]
操作符只是一个与其他方法类似的方法,除了花哨的名称。
可以将类型参数约束为具有特定方法的唯一方法是要求它实现具有该方法的接口,然后只有当参数类型实际实现该接口时,它才起作用
您所要求的是对类型的结构要求,而Dart类型系统大多是名义上的(类型是由其名称定义的,而不是由其成员定义的,因此,如果不按名称实现第一个类型,则具有相同成员的某个类型仍然是不同的类型)。否
[]
操作符只是一个与其他方法类似的方法,除了花哨的名称。
可以将类型参数约束为具有特定方法的唯一方法是要求它实现具有该方法的接口,然后只有当参数类型实际实现该接口时,它才起作用
您所要求的是对类型的结构要求,而Dart类型系统基本上是名义上的(一个类型是由其名称定义的,而不是由其成员定义的,因此具有相同成员的某个类型仍然是不同的类型,如果它不按名称实现第一个类型)。明白了。我的希望是操作符函数有某种隐式接口。再想一想,也许Map和List可以实现一种叫做
可索引的?就像int和double有可比的
。它们可以,但我们实际上并不希望这样。列表是一种具有连续整数键的映射,但它不是一回事。只有在对同一个操作进行抽象时,才应该存在一个公共超类型,而不仅仅是那些碰巧具有相同方法名的事物。我认为我们应该在可索引
之前执行长度表
。明白了。我的希望是操作符函数有某种隐式接口。再想一想,也许Map和List可以实现一种叫做可索引的?就像int和double有可比的
。它们可以,但我们实际上并不希望这样。列表是一种具有连续整数键的映射,但它不是一回事。只有在对同一个操作进行抽象时,才应该存在一个公共超类型,而不仅仅是对碰巧具有相同方法名的事物进行抽象。我认为我们应该在可索引
之前执行长度表
。