28

我知道您可以在正式的 arg 列表中指定函数类型,但我将如何为实例变量执行此操作?我想这样做:

class A<T> {
  int compare(T a, T b);
}

其中 compare 是具有适当类型的函数变量。我希望能够写:

A a = new A();
a.compare = ...
4

2 回答 2

36

您可以使用typedef

typedef Comparison<T> = int Function(T a, T b);

class A<T> {
  Comparison<T> compare;
}

main() {
  A a = new A<int>();
  a.compare = (int a, int b) => a.compareTo(b);
  print(a.compare(1, 2));
}
于 2013-07-12T14:39:55.217 回答
0

除了 Alexandre Ardhuin 的回答,直接声明,没有typedef

class A<T> {
  late int Function(T a, T b) compare;
}

main() {
  A<int> a = new A<int>();
  a.compare = (int a, int b) => a.compareTo(b);
  print(a.compare(1, 2));
}
于 2022-02-06T12:12:31.217 回答