在Dart中为类成员定义函数签名

时间:2013-09-07 14:52:34

标签: dart

我想指定用作类字段的函数的签名。 这是一个例子:

class Space<PointType>
{
    // num distance(PointType, PointType); This does not work
    final distance; // This works but dystance types are not defined 

    Space(num this.distance(PointType, PointType));     
}

我知道我可以使用typedef来定义回调接口。然而,这似乎不适用于泛型。 有什么建议吗?

2 个答案:

答案 0 :(得分:4)

您可以在typedef中使用泛型。在你的情况下:

typedef num ComputeDistance<E>(E p1, E p2);
class Space<PointType> {
  final ComputeDistance<PointType> distance;
  Space(this.distance);
}

答案 1 :(得分:2)

您可以使用typedef来声明类字段中使用的函数的签名。我并不完全确定我会按照您的具体示例进行操作,因此我将保持讨论的通用性。

以下是使用typedef

的语法
typedef functionReturnType nameOfTypedef(ParamType paramName);

这是一个具体的例子:

typedef String MyFuncType(int x, int y);

此示例定义MyFuncType以返回String并获取两个int个参数。

class MyClass {
  MyFuncType func; // Matches a func that returns a String and take 2 int arguments.
  ...
}

您可以阅读有关在https://github.com/dart-lang/cookbook/blob/basics/basics.asciidoc#using-typedef-to-declare-a-function-signature使用typedef的更全面的讨论。