【发布时间】:2019-07-17 16:39:20
【问题描述】:
我尝试编写以下代码,但 T 只能是 int、double 或自定义类。我找不到如何限制 Dart 中的类型或 C# 中的 where 之类的东西。我怎样才能在 Dart 中做到这一点?
class Array3dG<T> extends ListBase<T> {
List<T> l = List<T>();
Array3dG(List<T> list) {
l = list;
}
set length(int newLength) { l.length = newLength; }
int get length => l.length;
T operator [](int index) => l[index];
void operator []=(int index, T value) { l[index] = value; }
}
【问题讨论】:
-
当您说“自定义类”时,这意味着什么?对我来说,这听起来像任何类,所以问题应该更多是什么让这个“自定义类”特别?
-
在这种情况下,是我自己创建的另一个类来处理列表:
class Array1dG<T> extends ListBase<T> ...。这个类没有什么特别之处,只是另一个类。 -
如果课程没有什么特别之处,为什么不允许所有课程?我的意思是,如果你对类有一些要求,你可以将其指定为
。我只是想了解问题,以便提供最佳解决方案。正如您所提到的,Dart 没有来自 C# 的“位置”。 -
就我而言,我的班级只能处理数字类型或某些也可以处理数字的特定类型的班级。例如,如果用户输入 T = String,则所有类都会中断,因此我想限制 T 的可能类型。我想解决这个问题,在构造函数中检查类型 T 并抛出异常,但我如果这是一个好的解决方案,请不要这样做。
-
使用
的问题是我只能从一个接口或类扩展,但就我而言,我需要允许多个类型。
标签: dart