我知道您可以在正式的 arg 列表中指定函数类型,但我将如何为实例变量执行此操作?我想这样做:
class A<T> {
int compare(T a, T b);
}
其中 compare 是具有适当类型的函数变量。我希望能够写:
A a = new A();
a.compare = ...
我知道您可以在正式的 arg 列表中指定函数类型,但我将如何为实例变量执行此操作?我想这样做:
class A<T> {
int compare(T a, T b);
}
其中 compare 是具有适当类型的函数变量。我希望能够写:
A a = new A();
a.compare = ...
您可以使用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));
}
除了 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));
}