generics - Dart:需要实现运算符 [] 的通用约束

标签 generics dart operator-overloading

在 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/

相关文章:

c# - 在 List<Parent> 对象的泛型函数中使用子类型

android - Flutter 中的 ListView 居中

c# - 可空类型和赋值运算符

c++ - 有没有办法重载 operator= 以对右侧的函数具有特定行为

arrays - swift 3 : Getting error while joining the reversed() array

c#泛型类的具体覆盖

C# 泛型不*不*实现某些东西

flutter - 在空 flutter 上调用getter 'text'

dart - flutter - 图像被删除后仍然存在?

c++ - 使用其他对象的类构造函数