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

问题描述 投票:6回答:2

我知道你可以在正式的arg列表中指定函数类型,但是我如何为实例变量做这个呢?我想这样做:

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

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

A a = new A();
a.compare = ...
dart
2个回答
10
投票

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

2
投票

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

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.