在 Dart 中是否有可能有一个需要泛型类型来实现特定运算符函数的泛型约束?
我想要一个通用函数,它接受任何实现 operator []
的类型.
例如
void foo<T extends operator[]>(T arg) {
var v = arg['abc']
}
最佳答案
不。[]
运算符只是一个与其他方法一样的方法,除了花哨的名称。
您可以约束类型参数以具有特定方法的唯一方法是要求它实现具有该方法的接口(interface),然后它仅在参数类型确实实现该接口(interface)时才有效。
您要求的是对类型的结构要求,而 Dart 类型系统大多是名义上的(类型是由其名称定义的,而不是由其成员定义的,因此具有相同成员的东西如果没有,则仍然是不同的类型。 t 按名称实现第一个类型)。
关于generics - Dart:需要实现运算符 [] 的通用约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64649724/