变量声明的dart函数类型语法是什么?

时间:2013-07-12 14:25:07

标签: dart

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

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

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

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

2 个答案:

答案 0 :(得分:9)

您可以使用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));
}

答案 1 :(得分:2)

function_types通过typedef定义具有不同Arity的函数类型。

import 'package:function_types/function_types.dart';

void main() {
  Func2<int, int, int> mul = (int a, int b) => a * b;
  print(mul(3, 2));

  add = (int a, int b) => a + b;
  print(add(3, 2));
}

Func2<int, int, int> add;

您可以使用以下代码:

import 'package:function_types/function_types.dart';

void main() {
  var a = new A<String>();
  a.compare = (String a, String b) => a.compareTo(b);
  print(a.compare("A", "B"));
}

class A<T> {
  Func2<T, T, int> compare;
}